{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9a44e316-80be-4bd2-9a1d-b66588cb274c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import random\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d09b2b64-391f-495d-8d40-386b2232baa8",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Value:\n",
    "    def __init__(self, data, _children=(), _op=''):\n",
    "        self.data = data\n",
    "        self.grad = 0.0 # 梯度（向量）\n",
    "        self._backward = lambda: None # 反向传播函数，来执行梯度的自动传递（默认为空）\n",
    "        self._prev = set(_children) # 计算节点\n",
    "        self._op = _op # 计算符号\n",
    "\n",
    "    def __repr__(self):\n",
    "        return f\"Value(data={self.data}, grad={self.grad})\"\n",
    "\n",
    "    def __add__(self, other): # self 是加法的左操作数，other 是加法的右操作数\n",
    "        if isinstance(other, Value):\n",
    "            other = other # 如果 other 已经是 Value 类型，则保持原样\n",
    "        else:\n",
    "            other = Value(other) # 如果 other 不是 Value 类型，则将其包装成 Value 对象\n",
    "        \n",
    "        out = Value(self.data + other.data, (self, other), '+') # 创建 out 节点时建立的计算图（将 self 和 other 设为子节点）\n",
    "\n",
    "        def _backward():\n",
    "            self.grad += 1.0 * out.grad\n",
    "            other.grad += 1.0 * out.grad\n",
    "    \n",
    "        out._backward = _backward\n",
    "\n",
    "        return out # out 是加法的结果值\n",
    "\n",
    "    def __mul__(self, other):\n",
    "        if isinstance(other, Value):\n",
    "            other = other # 如果 other 已经是 Value 类型，则保持原样\n",
    "        else:\n",
    "            other = Value(other) # 如果 other 不是 Value 类型，则将其包装成 Value 对象\n",
    "\n",
    "        out = Value(self.data * other.data, (self, other), '*')\n",
    "\n",
    "        def _backward():\n",
    "            self.grad += other.data * out.grad\n",
    "            other.grad += self.data * out.grad\n",
    "\n",
    "        out._backward = _backward\n",
    "\n",
    "        return out\n",
    "\n",
    "    def __pow__(self, other):\n",
    "        assert isinstance(other, (int, float)), \"only supporting int/float powers for now\"\n",
    "        out = Value(self.data**other, (self,), f'**{other}')\n",
    "\n",
    "        def _backward():\n",
    "            self.grad += (other * self.data**(other-1)) * out.grad\n",
    "        out._backward = _backward\n",
    "\n",
    "        return out\n",
    "        \n",
    "    def __neg__(self): # -self\n",
    "        return self * -1\n",
    "\n",
    "    def __radd__(self, other): # other + self\n",
    "        return self + other\n",
    "\n",
    "    def __sub__(self, other): # self - other\n",
    "        return self + (-other)\n",
    "\n",
    "    def __rsub__(self, other): # other - self\n",
    "        return other + (-self)\n",
    "\n",
    "    def __rmul__(self, other): # other * self\n",
    "        return self * other\n",
    "\n",
    "    def __truediv__(self, other): # self / other\n",
    "        return self * other**-1\n",
    "\n",
    "    def __rtruediv__(self, other): # other / self\n",
    "        return other * self**-1\n",
    "\n",
    "    def tanh(self):\n",
    "        x = self.data\n",
    "        t = (math.exp(2*x) - 1) / (math.exp(2*x) + 1)\n",
    "        out = Value(t, (self, ), 'tanh')\n",
    "\n",
    "        def _backward():\n",
    "            self.grad += (1 - t**2) * out.grad\n",
    "    \n",
    "        out._backward = _backward\n",
    "\n",
    "        return out\n",
    "\n",
    "    def backward(self):\n",
    "        topo = [] # 存储拓扑排序结果\n",
    "        visited = set() # 记录已访问的节点\n",
    "\n",
    "        def build_topo(v):\n",
    "            if v not in visited: # 如果当前节点 v 没有被访问过，继续处理\n",
    "                visited.add(v) # 将 v 加入 visited 集合\n",
    "                for child in v._prev: # 对 v 的所有前驱节点(v._prev)递归调用 build_topo\n",
    "                    build_topo(child)\n",
    "                topo.append(v) # 当所有前驱节点都处理完后，将 v 加入 topo 列表\n",
    "\n",
    "        build_topo(self)\n",
    "\n",
    "        self.grad = 1.0\n",
    "        for node in reversed(topo):\n",
    "            node._backward()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9bb69d85-5929-4b67-ac6c-11dee98decd5",
   "metadata": {},
   "outputs": [],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def trace(root):\n",
    "    nodes, edges = set(), set()\n",
    "    def build(v):\n",
    "        if v not in nodes:\n",
    "            nodes.add(v)\n",
    "            for child in v._prev:\n",
    "                edges.add((child, v))\n",
    "                build(child)\n",
    "    build(root)\n",
    "    return nodes, edges\n",
    "\n",
    "def draw_dot(root):\n",
    "    nodes, edges = trace(root)\n",
    "    dot = Digraph(format='svg', graph_attr={'rankdir': 'LR'})\n",
    "\n",
    "    for n in nodes:\n",
    "        dot.node(name=str(id(n)), label = \"{ data %.4f | grad %.4f }\" % (n.data, n.grad), shape='record')\n",
    "        if n._op:\n",
    "            dot.node(name=str(id(n)) + n._op, label=n._op)\n",
    "            dot.edge(str(id(n)) + n._op, str(id(n)))\n",
    "\n",
    "    for n1, n2 in edges:\n",
    "        dot.edge(str(id(n1)), str(id(n2)) + n2._op)\n",
    "\n",
    "    return dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9c8a2255-80fc-47d0-81b8-4e7dfe1f1006",
   "metadata": {},
   "outputs": [],
   "source": [
    "from graphviz import Digraph\n",
    "\n",
    "def trace(root):\n",
    "    nodes, edges = set(), set()\n",
    "    def build(v):\n",
    "        if v not in nodes:\n",
    "            nodes.add(v)\n",
    "            for child in v._prev:\n",
    "                edges.add((child, v))\n",
    "                build(child)\n",
    "    build(root)\n",
    "    return nodes, edges\n",
    "\n",
    "\"\"\"根据计算图结构自动分配层类型\"\"\"\n",
    "def assign_layers(nodes, root):\n",
    "    depths = {} # 计算每个节点的深度\n",
    "    \n",
    "    def compute_depth(node, depth):\n",
    "        if node not in depths or depths[node] < depth:\n",
    "            depths[node] = depth\n",
    "            for child in node._prev:\n",
    "                compute_depth(child, depth + 1)\n",
    "    \n",
    "    compute_depth(root, 0)\n",
    "    \n",
    "    # 找到最大深度\n",
    "    max_depth = max(depths.values()) if depths else 0\n",
    "    \n",
    "    # 分配层类型\n",
    "    layer_types = {}\n",
    "    for node in nodes:\n",
    "        depth = depths.get(node, 0)\n",
    "        if depth == 0:\n",
    "            layer_types[node] = 'input'\n",
    "        elif depth == max_depth:\n",
    "            layer_types[node] = 'output'\n",
    "        else:\n",
    "            layer_types[node] = 'hidden'\n",
    "    \n",
    "    return layer_types\n",
    "\n",
    "\"\"\"基于节点特征推断层类型\"\"\"\n",
    "def assign_layers_by_features(nodes, root):\n",
    "    layer_types = {}\n",
    "    \n",
    "    for node in nodes:\n",
    "        # 判断输入节点：没有操作且没有前驱节点\n",
    "        if not node._op and not node._prev:\n",
    "            layer_types[node] = 'input'\n",
    "        # 判断输出节点：是根节点或没有后续节点（简化判断）\n",
    "        elif node is root:\n",
    "            layer_types[node] = 'output'\n",
    "        # 其他情况为隐藏层\n",
    "        else:\n",
    "            layer_types[node] = 'hidden'\n",
    "    \n",
    "    return layer_types\n",
    "\n",
    "\"\"\"更精确的层类型推断\"\"\"\n",
    "def assign_layers_precise(nodes, root):\n",
    "    layer_types = {}\n",
    "    \n",
    "    # 找到所有输入节点（原始输入数据）\n",
    "    input_nodes = set()\n",
    "    for node in nodes:\n",
    "        if not node._prev and not node._op:  # 没有前驱且没有操作\n",
    "            input_nodes.add(node)\n",
    "    \n",
    "    # 从根节点反向标记\n",
    "    def mark_outputs(node):\n",
    "        layer_types[node] = 'output'\n",
    "        for child in node._prev:\n",
    "            if child not in layer_types or layer_types[child] != 'output':\n",
    "                mark_outputs(child)\n",
    "    \n",
    "    # 标记输出节点链\n",
    "    mark_outputs(root)\n",
    "    \n",
    "    # 标记输入节点\n",
    "    for node in input_nodes:\n",
    "        layer_types[node] = 'input'\n",
    "    \n",
    "    # 剩下的节点都是隐藏层\n",
    "    for node in nodes:\n",
    "        if node not in layer_types:\n",
    "            layer_types[node] = 'hidden'\n",
    "    \n",
    "    return layer_types\n",
    "\n",
    "def draw_dots(root):\n",
    "    nodes, edges = trace(root)\n",
    "    \n",
    "    # 自动分配层类型\n",
    "    layer_types = assign_layers_by_features(nodes, root)\n",
    "    \n",
    "    dot = Digraph(format='svg', graph_attr={'rankdir': 'LR'})\n",
    "\n",
    "    # 定义层颜色映射\n",
    "    layer_colors = {\n",
    "        'input': 'lightblue',\n",
    "        'hidden': 'lightgreen', \n",
    "        'output': 'lightyellow'\n",
    "    }\n",
    "    \n",
    "    for n in nodes:\n",
    "        layer_type = layer_types.get(n, 'hidden')\n",
    "        color = layer_colors.get(layer_type, 'white')\n",
    "        \n",
    "        dot.node(\n",
    "            name=str(id(n)), \n",
    "            label=\"{ data %.4f | grad %.4f }\" % (n.data, n.grad), \n",
    "            shape='record',\n",
    "            style='filled',\n",
    "            fillcolor=color\n",
    "        )\n",
    "        \n",
    "        if n._op:\n",
    "            # 操作节点用灰色\n",
    "            dot.node(\n",
    "                name=str(id(n)) + n._op, \n",
    "                label=n._op,\n",
    "                style='filled', \n",
    "                fillcolor='lightgray'\n",
    "            )\n",
    "            dot.edge(str(id(n)) + n._op, str(id(n)))\n",
    "\n",
    "    for n1, n2 in edges:\n",
    "        dot.edge(str(id(n1)), str(id(n2)) + n2._op)\n",
    "\n",
    "    return dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f621c971-93ef-49a9-9fae-ba330eae57e4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_mlp_line(layers_config):\n",
    "    dot = Digraph(comment='MLP Neural Network')\n",
    "    dot.attr(rankdir='LR', splines='line')  # 从左到右排列，直线连接\n",
    "    \n",
    "    # 设置全局属性\n",
    "    dot.attr('node', shape='circle')\n",
    "    \n",
    "    # 为每层创建子图（用于垂直对齐）\n",
    "    with dot.subgraph() as s:\n",
    "        s.attr(rank='same')\n",
    "        \n",
    "        # 输入层\n",
    "        for i in range(layers_config[0][0]):\n",
    "            s.node(f'input_{i}', f'x{i+1}', \n",
    "                   style='filled', fillcolor='lightblue')\n",
    "    \n",
    "    # 隐藏层和输出层\n",
    "    for layer_idx, (input_size, output_size) in enumerate(layers_config):\n",
    "        with dot.subgraph() as s:\n",
    "            s.attr(rank='same')\n",
    "            \n",
    "            # 当前层的神经元\n",
    "            for j in range(output_size):\n",
    "                if layer_idx == len(layers_config) - 1:\n",
    "                    # 输出层\n",
    "                    s.node(f'layer{layer_idx}_neuron{j}', f'y{j+1}', \n",
    "                           style='filled', fillcolor='lightgreen')\n",
    "                else:\n",
    "                    # 隐藏层\n",
    "                    s.node(f'layer{layer_idx}_neuron{j}', f'h{j+1}^{layer_idx+1}',\n",
    "                           style='filled', fillcolor='lightyellow')\n",
    "    \n",
    "    # 添加连接\n",
    "    for layer_idx, (input_size, output_size) in enumerate(layers_config):\n",
    "        for i in range(input_size):\n",
    "            for j in range(output_size):\n",
    "                if layer_idx == 0:\n",
    "                    # 输入层到第一隐藏层\n",
    "                    dot.edge(f'input_{i}', f'layer{layer_idx}_neuron{j}')\n",
    "                else:\n",
    "                    # 隐藏层之间的连接\n",
    "                    dot.edge(f'layer{layer_idx-1}_neuron{i}', f'layer{layer_idx}_neuron{j}')\n",
    "    \n",
    "    return dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "700c5012-8b01-4d68-a8ee-1bdc30a1e5b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_mlp_simple(layers_config): \n",
    "    dot = Digraph(comment='MLP Structure')\n",
    "    dot.attr(rankdir='LR', splines='line')  # 从左到右排列，直线连接\n",
    "    \n",
    "    # 输入层\n",
    "    with dot.subgraph() as s:\n",
    "        s.attr(rank='same')\n",
    "        s.node('input', f'Input\\n{layers_config[0][0]}', shape='box', \n",
    "               style='filled', fillcolor='lightblue')\n",
    "    \n",
    "    # 隐藏层和输出层\n",
    "    for i, (input_size, output_size) in enumerate(layers_config):\n",
    "        with dot.subgraph() as s:\n",
    "            s.attr(rank='same')\n",
    "            if i == len(layers_config) - 1:\n",
    "                # 输出层\n",
    "                s.node(f'layer{i}', f'Output\\n{output_size}', shape='box',\n",
    "                       style='filled', fillcolor='lightgreen')\n",
    "            else:\n",
    "                # 隐藏层\n",
    "                s.node(f'layer{i}', f'Hidden {i+1}\\n{output_size} neurons', shape='box',\n",
    "                       style='filled', fillcolor='lightyellow')\n",
    "    \n",
    "    # 添加连接\n",
    "    dot.edge('input', 'layer0')\n",
    "    for i in range(len(layers_config)-1):\n",
    "        dot.edge(f'layer{i}', f'layer{i+1}')\n",
    "    \n",
    "    return dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "34ac6867-258c-4ab4-9098-ffc0cba21c51",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 神经元\n",
    "class Neuron:\n",
    "    def __init__(self, nin): # nin 是输入数量（输入特征维度）\n",
    "        print(f\"创建 Neuron: {nin} 个输入\")\n",
    "        # 权重列表，包含 nin 个 Value 对象，每个权重初始化为 -1 到 1 之间的随机数\n",
    "        self.w = [Value(random.uniform(-1, 1)) for _ in range(nin)] \n",
    "        # 偏置项，也是一个 Value 对象，初始化为 -1 到 1 之间的随机数\n",
    "        self.b = Value(random.uniform(-1, 1)) \n",
    "\n",
    "    def __call__(self, x): # 前向传播\n",
    "        print(f\"输入 x: {x}\")\n",
    "        print(f\"权重 w: {[f'{w.data:.4f}' for w in self.w]}\")\n",
    "        print(f\"偏置 b: {self.b.data:.4f}\")\n",
    "        \n",
    "        weighted_sum = 0\n",
    "        \n",
    "        for i, (wi, xi) in enumerate(zip(self.w, x)):\n",
    "            product = wi * xi\n",
    "            weighted_sum = weighted_sum + product if i > 0 else product\n",
    "            print(f\"w{i}x{i}: {wi.data:.4f} × {xi} = {product.data:.4f}\")\n",
    "        \n",
    "        act = weighted_sum + self.b\n",
    "        print(f\"加权和 + 偏置: {weighted_sum.data:.4f} + {self.b.data:.4f} = {act.data:.4f}\")\n",
    "        \n",
    "        out = act.tanh() # 通过激活函数\n",
    "        print(f\"-----------------------------------> 激活（神经元输出）: tanh({act.data:.4f}) = {out.data:.4f}\")\n",
    "        \n",
    "        return out # tanh(b + w₁x₁ + w₂x₂ + ... + wₙxₙ)\n",
    "\n",
    "    def parameters(self):\n",
    "        return self.w + [self.b]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "40ed4dca-6db5-47a3-bf36-c02a56788059",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "创建 Neuron: 2 个输入\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['-0.6318', '0.0971']\n",
      "偏置 b: 0.4615\n",
      "w0x0: -0.6318 × 2.0 = -1.2635\n",
      "w1x1: 0.0971 × 3.0 = 0.2912\n",
      "加权和 + 偏置: -0.9723 + 0.4615 = -0.5108\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-0.5108) = -0.4705\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Value(data=-0.4705404849942098, grad=0.0)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [2.0, 3.0] # 输入向量，2个特征\n",
    "n = Neuron(2) # 创建有 2 个输入的神经元\n",
    "Ns = n(x) # 对输入进行前向传播计算\n",
    "Ns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c099d0da-4fdb-407a-91b7-f169fec66993",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"1340pt\" height=\"210pt\"\n",
       " viewBox=\"0.00 0.00 1340.00 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-206 1335.5,-206 1335.5,4 -4,4\"/>\n",
       "<!-- 2195962595888 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195962595888</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-165.5 0,-201.5 165.5,-201.5 165.5,-165.5 0,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6318</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-166 84.25,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594208* -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195962594208*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962595888&#45;&gt;2195962594208* -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195962595888&#45;&gt;2195962594208*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-165.07C149.99,-162.33 157.98,-159.43 165.5,-156.5 175.41,-152.64 186.03,-148.02 195.62,-143.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.94,-146.92 204.56,-139.55 194.01,-140.56 196.94,-146.92\"/>\n",
       "</g>\n",
       "<!-- 2195962595408 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195962595408</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"585.25,-27.5 585.25,-63.5 746.25,-63.5 746.25,-27.5 585.25,-27.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-40.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.4615</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"665,-28 665,-63.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"705.62\" y=\"-40.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962596704+ -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962596704+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"811.5\" cy=\"-72.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-67.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962595408&#45;&gt;2195962596704+ -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195962595408&#45;&gt;2195962596704+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M746.61,-60.5C756.1,-62.28 765.4,-64.03 773.84,-65.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"773.16,-69.05 783.64,-67.45 774.46,-62.17 773.16,-69.05\"/>\n",
       "</g>\n",
       "<!-- 2195962595552 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195962595552</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-55.5 2.25,-91.5 163.25,-91.5 163.25,-55.5 2.25,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0971</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-56 82,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962605488* -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195962605488*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962595552&#45;&gt;2195962605488* -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195962595552&#45;&gt;2195962605488*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M163.61,-73.5C172.73,-73.5 181.67,-73.5 189.85,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.69,-77 199.69,-73.5 189.69,-70 189.69,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962607888 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195962607888</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"583,-82.5 583,-118.5 748.5,-118.5 748.5,-82.5 583,-82.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9723</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-83 667.25,-118.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962607888&#45;&gt;2195962596704+ -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195962607888&#45;&gt;2195962596704+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-84.54C757.5,-82.82 766.08,-81.15 773.92,-79.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"774.55,-83.07 783.7,-77.72 773.21,-76.2 774.55,-83.07\"/>\n",
       "</g>\n",
       "<!-- 2195962607888+ -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195962607888+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"520\" cy=\"-100.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-95.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962607888+&#45;&gt;2195962607888 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195962607888+&#45;&gt;2195962607888</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-100.5C554.47,-100.5 562.57,-100.5 571.14,-100.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-104 581.09,-100.5 571.09,-97 571.09,-104\"/>\n",
       "</g>\n",
       "<!-- 2195962596704 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195962596704</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"874.5,-54.5 874.5,-90.5 1040,-90.5 1040,-54.5 874.5,-54.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.5108</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-55 958.75,-90.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962605920tanh -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195962605920tanh</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"1103\" cy=\"-72.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-67.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962596704&#45;&gt;2195962605920tanh -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195962596704&#45;&gt;2195962605920tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-72.5C1048.64,-72.5 1056.9,-72.5 1064.48,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.27,-76 1074.27,-72.5 1064.27,-69 1064.27,-76\"/>\n",
       "</g>\n",
       "<!-- 2195962596704+&#45;&gt;2195962596704 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195962596704+&#45;&gt;2195962596704</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-72.5C845.97,-72.5 854.07,-72.5 862.64,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"862.59,-76 872.59,-72.5 862.59,-69 862.59,-76\"/>\n",
       "</g>\n",
       "<!-- 2195962605920 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962605920</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"1166,-54.5 1166,-90.5 1331.5,-90.5 1331.5,-54.5 1166,-54.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4705</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-55 1250.25,-90.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962605920tanh&#45;&gt;2195962605920 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962605920tanh&#45;&gt;2195962605920</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-72.5C1137.47,-72.5 1145.57,-72.5 1154.14,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1154.09,-76 1164.09,-72.5 1154.09,-69 1154.09,-76\"/>\n",
       "</g>\n",
       "<!-- 2195962595792 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195962595792</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-0.5 2.25,-36.5 163.25,-36.5 163.25,-0.5 2.25,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-1 82,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962595792&#45;&gt;2195962605488* -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195962595792&#45;&gt;2195962605488*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-36.93C149.99,-39.67 157.98,-42.57 165.5,-45.5 175.41,-49.36 186.03,-53.98 195.62,-58.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.01,-61.44 204.56,-62.45 196.94,-55.08 194.01,-61.44\"/>\n",
       "</g>\n",
       "<!-- 2195962594208 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962594208</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"291.5,-110.5 291.5,-146.5 457,-146.5 457,-110.5 291.5,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.2635</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-111 375.75,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594208&#45;&gt;2195962607888+ -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962594208&#45;&gt;2195962607888+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-112.54C466,-110.82 474.58,-109.15 482.42,-107.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"483.05,-111.07 492.2,-105.72 481.71,-104.2 483.05,-111.07\"/>\n",
       "</g>\n",
       "<!-- 2195962594208*&#45;&gt;2195962594208 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195962594208*&#45;&gt;2195962594208</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-128.5C262.97,-128.5 271.07,-128.5 279.64,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-132 289.59,-128.5 279.59,-125 279.59,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962605488 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195962605488</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"293.75,-55.5 293.75,-91.5 454.75,-91.5 454.75,-55.5 293.75,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2912</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-56 373.5,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962605488&#45;&gt;2195962607888+ -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195962605488&#45;&gt;2195962607888+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M455.11,-88.5C464.6,-90.28 473.9,-92.03 482.34,-93.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.66,-97.05 492.14,-95.45 482.96,-90.17 481.66,-97.05\"/>\n",
       "</g>\n",
       "<!-- 2195962605488*&#45;&gt;2195962605488 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195962605488*&#45;&gt;2195962605488</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-73.5C263.67,-73.5 272.7,-73.5 282.2,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"282.02,-77 292.02,-73.5 282.02,-70 282.02,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962594256 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195962594256</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-110.5 2.25,-146.5 163.25,-146.5 163.25,-110.5 2.25,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-111 82,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594256&#45;&gt;2195962594208* -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195962594256&#45;&gt;2195962594208*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M163.61,-128.5C172.73,-128.5 181.67,-128.5 189.85,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.69,-132 199.69,-128.5 189.69,-125 189.69,-132\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff49923550>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 画出计算图\n",
    "draw_dot(Ns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "3ef220ab-1914-4ad2-b0a6-5d90a68286e5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 层\n",
    "class Layer:\n",
    "    def __init__(self, nin, nout):\n",
    "        print(f\"创建 Layer: {nin} 个输入维度，{nout} 个输出维度\")\n",
    "        # 包含 nout 个神经元的列表，每个神经元都有 nin 个输入\n",
    "        self.neurons = [Neuron(nin) for _ in range(nout)] \n",
    "        print(f\"创建了 {len(self.neurons)} 个神经元\")\n",
    "\n",
    "    def __call__(self, x):\n",
    "        outs = [n(x) for n in self.neurons]\n",
    "        print(f\"-----------------------------------> Layer 输出: {[out.data for out in outs]}\")\n",
    "        return outs\n",
    "\n",
    "    def parameters(self):\n",
    "        return [p for n in self.neurons for p in n.parameters()] # 收集每一个神经元的参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "145eef6f-80ef-4e58-9470-011532a53d94",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "创建 Layer: 2 个输入维度，3 个输出维度\n",
      "创建 Neuron: 2 个输入\n",
      "创建 Neuron: 2 个输入\n",
      "创建 Neuron: 2 个输入\n",
      "创建了 3 个神经元\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['-0.4705', '0.0200']\n",
      "偏置 b: -0.9172\n",
      "w0x0: -0.4705 × 2.0 = -0.9411\n",
      "w1x1: 0.0200 × 3.0 = 0.0601\n",
      "加权和 + 偏置: -0.8810 + -0.9172 = -1.7982\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-1.7982) = -0.9466\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['-0.7420', '-0.2161']\n",
      "偏置 b: 0.7404\n",
      "w0x0: -0.7420 × 2.0 = -1.4841\n",
      "w1x1: -0.2161 × 3.0 = -0.6484\n",
      "加权和 + 偏置: -2.1324 + 0.7404 = -1.3920\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-1.3920) = -0.8836\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['0.2394', '0.1861']\n",
      "偏置 b: 0.8210\n",
      "w0x0: 0.2394 × 2.0 = 0.4788\n",
      "w1x1: 0.1861 × 3.0 = 0.5583\n",
      "加权和 + 偏置: 1.0371 + 0.8210 = 1.8582\n",
      "-----------------------------------> 激活（神经元输出）: tanh(1.8582) = 0.9525\n",
      "-----------------------------------> Layer 输出: [-0.9466168347633918, -0.8836173322053116, 0.9525081069849349]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Value(data=-0.9466168347633918, grad=0.0),\n",
       " Value(data=-0.8836173322053116, grad=0.0),\n",
       " Value(data=0.9525081069849349, grad=0.0)]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [2.0, 3.0] # 输入向量，2个特征\n",
    "n = Layer(2, 3) # 创建有 2 个输入、3 个神经元的层\n",
    "Ls = n(x) # 对输入进行前向传播计算\n",
    "Ls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "519dd92d-5447-42cf-9607-2af146889e85",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(Ls) # 该层神经元的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "bb7a0d68-3d63-4eb2-a103-585bca83d01f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"1340pt\" height=\"210pt\"\n",
       " viewBox=\"0.00 0.00 1340.00 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-206 1335.5,-206 1335.5,4 -4,4\"/>\n",
       "<!-- 2195962609184 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195962609184</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-165.5 2.25,-201.5 163.25,-201.5 163.25,-165.5 2.25,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0200</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-166 82,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962606640* -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195962606640*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962609184&#45;&gt;2195962606640* -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195962609184&#45;&gt;2195962606640*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-165.07C149.99,-162.33 157.98,-159.43 165.5,-156.5 175.41,-152.64 186.03,-148.02 195.62,-143.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.94,-146.92 204.56,-139.55 194.01,-140.56 196.94,-146.92\"/>\n",
       "</g>\n",
       "<!-- 2195962606640 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195962606640</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"293.75,-110.5 293.75,-146.5 454.75,-146.5 454.75,-110.5 293.75,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0601</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-111 373.5,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594016+ -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962594016+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"520\" cy=\"-100.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-95.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962606640&#45;&gt;2195962594016+ -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195962606640&#45;&gt;2195962594016+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M455.11,-112.94C464.6,-111.1 473.9,-109.28 482.34,-107.64\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"482.99,-111.08 492.14,-105.73 481.66,-104.21 482.99,-111.08\"/>\n",
       "</g>\n",
       "<!-- 2195962606640*&#45;&gt;2195962606640 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195962606640*&#45;&gt;2195962606640</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-128.5C263.67,-128.5 272.7,-128.5 282.2,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"282.02,-132 292.02,-128.5 282.02,-125 282.02,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962607168 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195962607168</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"291.5,-55.5 291.5,-91.5 457,-91.5 457,-55.5 291.5,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9411</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-56 375.75,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962607168&#45;&gt;2195962594016+ -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195962607168&#45;&gt;2195962594016+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-88.89C466,-90.54 474.58,-92.16 482.42,-93.63\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.72,-97.06 492.2,-95.47 483.01,-90.18 481.72,-97.06\"/>\n",
       "</g>\n",
       "<!-- 2195962607168* -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195962607168*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962607168*&#45;&gt;2195962607168 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195962607168*&#45;&gt;2195962607168</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-73.5C262.97,-73.5 271.07,-73.5 279.64,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-77 289.59,-73.5 279.59,-70 279.59,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962606688 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195962606688</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-55.5 0,-91.5 165.5,-91.5 165.5,-55.5 0,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4705</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-56 84.25,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962606688&#45;&gt;2195962607168* -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195962606688&#45;&gt;2195962607168*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.7,-73.5C174.14,-73.5 182.4,-73.5 189.98,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.77,-77 199.77,-73.5 189.77,-70 189.77,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962594016 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962594016</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"583,-82.5 583,-118.5 748.5,-118.5 748.5,-82.5 583,-82.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.8810</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-83 667.25,-118.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691541392+ -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195691541392+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"811.5\" cy=\"-72.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-67.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962594016&#45;&gt;2195691541392+ -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195962594016&#45;&gt;2195691541392+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-84.54C757.5,-82.82 766.08,-81.15 773.92,-79.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"774.55,-83.07 783.7,-77.72 773.21,-76.2 774.55,-83.07\"/>\n",
       "</g>\n",
       "<!-- 2195962594016+&#45;&gt;2195962594016 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962594016+&#45;&gt;2195962594016</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-100.5C554.47,-100.5 562.57,-100.5 571.14,-100.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-104 581.09,-100.5 571.09,-97 571.09,-104\"/>\n",
       "</g>\n",
       "<!-- 2195962609472 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195962609472</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-0.5 2.25,-36.5 163.25,-36.5 163.25,-0.5 2.25,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-1 82,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962609472&#45;&gt;2195962607168* -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962609472&#45;&gt;2195962607168*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-36.93C149.99,-39.67 157.98,-42.57 165.5,-45.5 175.41,-49.36 186.03,-53.98 195.62,-58.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.01,-61.44 204.56,-62.45 196.94,-55.08 194.01,-61.44\"/>\n",
       "</g>\n",
       "<!-- 2195962594640 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195962594640</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-110.5 2.25,-146.5 163.25,-146.5 163.25,-110.5 2.25,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-111 82,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594640&#45;&gt;2195962606640* -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195962594640&#45;&gt;2195962606640*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M163.61,-128.5C172.73,-128.5 181.67,-128.5 189.85,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.69,-132 199.69,-128.5 189.69,-125 189.69,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962608992 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962608992</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"583,-27.5 583,-63.5 748.5,-63.5 748.5,-27.5 583,-27.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-40.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9172</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-28 667.25,-63.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-40.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962608992&#45;&gt;2195691541392+ -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195962608992&#45;&gt;2195691541392+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-60.89C757.5,-62.54 766.08,-64.16 773.92,-65.63\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"773.22,-69.06 783.7,-67.47 774.51,-62.18 773.22,-69.06\"/>\n",
       "</g>\n",
       "<!-- 2195691539808 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195691539808</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"1166,-54.5 1166,-90.5 1331.5,-90.5 1331.5,-54.5 1166,-54.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9466</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-55 1250.25,-90.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691539808tanh -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195691539808tanh</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"1103\" cy=\"-72.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-67.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195691539808tanh&#45;&gt;2195691539808 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195691539808tanh&#45;&gt;2195691539808</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-72.5C1137.47,-72.5 1145.57,-72.5 1154.14,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1154.09,-76 1164.09,-72.5 1154.09,-69 1154.09,-76\"/>\n",
       "</g>\n",
       "<!-- 2195691541392 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195691541392</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"874.5,-54.5 874.5,-90.5 1040,-90.5 1040,-54.5 874.5,-54.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.7982</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-55 958.75,-90.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-67.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691541392&#45;&gt;2195691539808tanh -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195691541392&#45;&gt;2195691539808tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-72.5C1048.64,-72.5 1056.9,-72.5 1064.48,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.27,-76 1074.27,-72.5 1064.27,-69 1064.27,-76\"/>\n",
       "</g>\n",
       "<!-- 2195691541392+&#45;&gt;2195691541392 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195691541392+&#45;&gt;2195691541392</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-72.5C845.97,-72.5 854.07,-72.5 862.64,-72.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"862.59,-76 872.59,-72.5 862.59,-69 862.59,-76\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff49923340>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 画出该层中第1个神经元的计算图\n",
    "draw_dot(Ls[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "0006664d-0d11-49e2-b697-596ec5d8bd90",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"1340pt\" height=\"210pt\"\n",
       " viewBox=\"0.00 0.00 1340.00 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-206 1335.5,-206 1335.5,4 -4,4\"/>\n",
       "<!-- 2195962524672 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195962524672</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"1166,-109.5 1166,-145.5 1331.5,-145.5 1331.5,-109.5 1166,-109.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.8836</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-110 1250.25,-145.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962524672tanh -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195962524672tanh</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"1103\" cy=\"-127.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-122.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962524672tanh&#45;&gt;2195962524672 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195962524672tanh&#45;&gt;2195962524672</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-127.5C1137.47,-127.5 1145.57,-127.5 1154.14,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1154.09,-131 1164.09,-127.5 1154.09,-124 1154.09,-131\"/>\n",
       "</g>\n",
       "<!-- 2195691542544 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195691542544</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"291.5,-110.5 291.5,-146.5 457,-146.5 457,-110.5 291.5,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.4841</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-111 375.75,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513296+ -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195962513296+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"520\" cy=\"-100.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-95.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195691542544&#45;&gt;2195962513296+ -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195691542544&#45;&gt;2195962513296+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-112.54C466,-110.82 474.58,-109.15 482.42,-107.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"483.05,-111.07 492.2,-105.72 481.71,-104.2 483.05,-111.07\"/>\n",
       "</g>\n",
       "<!-- 2195691542544* -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195691542544*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195691542544*&#45;&gt;2195691542544 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195691542544*&#45;&gt;2195691542544</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-128.5C262.97,-128.5 271.07,-128.5 279.64,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-132 289.59,-128.5 279.59,-125 279.59,-132\"/>\n",
       "</g>\n",
       "<!-- 2195691540528 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195691540528</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-165.5 2.25,-201.5 163.25,-201.5 163.25,-165.5 2.25,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-166 82,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691540528&#45;&gt;2195691542544* -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195691540528&#45;&gt;2195691542544*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-165.07C149.99,-162.33 157.98,-159.43 165.5,-156.5 175.41,-152.64 186.03,-148.02 195.62,-143.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.94,-146.92 204.56,-139.55 194.01,-140.56 196.94,-146.92\"/>\n",
       "</g>\n",
       "<!-- 2195691549744 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195691549744</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"2.25,-55.5 2.25,-91.5 163.25,-91.5 163.25,-55.5 2.25,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-56 82,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691542496* -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195691542496*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"228.5\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195691549744&#45;&gt;2195691542496* -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195691549744&#45;&gt;2195691542496*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M163.61,-73.5C172.73,-73.5 181.67,-73.5 189.85,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.69,-77 199.69,-73.5 189.69,-70 189.69,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962597040 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962597040</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-0.5 0,-36.5 165.5,-36.5 165.5,-0.5 0,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.2161</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-1 84.25,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962597040&#45;&gt;2195691542496* -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195962597040&#45;&gt;2195691542496*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M139.38,-36.88C148.16,-39.97 157.11,-43.24 165.5,-46.5 175.28,-50.3 185.79,-54.73 195.32,-58.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.64,-61.98 204.2,-62.83 196.47,-55.58 193.64,-61.98\"/>\n",
       "</g>\n",
       "<!-- 2195962519824 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962519824</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"874.5,-109.5 874.5,-145.5 1040,-145.5 1040,-109.5 874.5,-109.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.3920</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-110 958.75,-145.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962519824&#45;&gt;2195962524672tanh -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195962519824&#45;&gt;2195962524672tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-127.5C1048.64,-127.5 1056.9,-127.5 1064.48,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.27,-131 1074.27,-127.5 1064.27,-124 1064.27,-131\"/>\n",
       "</g>\n",
       "<!-- 2195962519824+ -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195962519824+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"811.5\" cy=\"-127.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-122.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962519824+&#45;&gt;2195962519824 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962519824+&#45;&gt;2195962519824</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-127.5C845.97,-127.5 854.07,-127.5 862.64,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"862.59,-131 872.59,-127.5 862.59,-124 862.59,-131\"/>\n",
       "</g>\n",
       "<!-- 2195962608464 -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195962608464</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-110.5 0,-146.5 165.5,-146.5 165.5,-110.5 0,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.7420</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-111 84.25,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962608464&#45;&gt;2195691542544* -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195962608464&#45;&gt;2195691542544*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.7,-128.5C174.14,-128.5 182.4,-128.5 189.98,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.77,-132 199.77,-128.5 189.77,-125 189.77,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962609520 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962609520</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"585.25,-137.5 585.25,-173.5 746.25,-173.5 746.25,-137.5 585.25,-137.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-150.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.7404</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"665,-138 665,-173.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"705.62\" y=\"-150.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962609520&#45;&gt;2195962519824+ -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962609520&#45;&gt;2195962519824+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M746.61,-139.94C756.1,-138.1 765.4,-136.28 773.84,-134.64\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"774.49,-138.08 783.64,-132.73 773.16,-131.21 774.49,-138.08\"/>\n",
       "</g>\n",
       "<!-- 2195962513296 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195962513296</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"583,-82.5 583,-118.5 748.5,-118.5 748.5,-82.5 583,-82.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.1324</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-83 667.25,-118.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513296&#45;&gt;2195962519824+ -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195962513296&#45;&gt;2195962519824+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-115.89C757.5,-117.54 766.08,-119.16 773.92,-120.63\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"773.22,-124.06 783.7,-122.47 774.51,-117.18 773.22,-124.06\"/>\n",
       "</g>\n",
       "<!-- 2195962513296+&#45;&gt;2195962513296 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195962513296+&#45;&gt;2195962513296</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-100.5C554.47,-100.5 562.57,-100.5 571.14,-100.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-104 581.09,-100.5 571.09,-97 571.09,-104\"/>\n",
       "</g>\n",
       "<!-- 2195691542496 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195691542496</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"291.5,-55.5 291.5,-91.5 457,-91.5 457,-55.5 291.5,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6484</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-56 375.75,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195691542496&#45;&gt;2195962513296+ -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195691542496&#45;&gt;2195962513296+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-88.89C466,-90.54 474.58,-92.16 482.42,-93.63\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.72,-97.06 492.2,-95.47 483.01,-90.18 481.72,-97.06\"/>\n",
       "</g>\n",
       "<!-- 2195691542496*&#45;&gt;2195691542496 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195691542496*&#45;&gt;2195691542496</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-73.5C262.97,-73.5 271.07,-73.5 279.64,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-77 289.59,-73.5 279.59,-70 279.59,-77\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff49922da0>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 画出该层中第2个神经元的计算图\n",
    "draw_dot(Ls[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "e3c20fc6-5842-4309-8219-9f57963af02d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"1317pt\" height=\"210pt\"\n",
       " viewBox=\"0.00 0.00 1317.00 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-206 1313,-206 1313,4 -4,4\"/>\n",
       "<!-- 2195962513536 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195962513536</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"861,-109.5 861,-145.5 1022,-145.5 1022,-109.5 861,-109.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"900.88\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 1.8582</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"940.75,-110 940.75,-145.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"981.38\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513200tanh -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962513200tanh</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"1085\" cy=\"-127.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1085\" y=\"-122.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962513536&#45;&gt;2195962513200tanh -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962513536&#45;&gt;2195962513200tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1022.35,-127.5C1030.74,-127.5 1038.96,-127.5 1046.52,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1046.28,-131 1056.28,-127.5 1046.28,-124 1046.28,-131\"/>\n",
       "</g>\n",
       "<!-- 2195962513536+ -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195962513536+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"798\" cy=\"-127.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"798\" y=\"-122.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962513536+&#45;&gt;2195962513536 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195962513536+&#45;&gt;2195962513536</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M825.28,-127.5C832.4,-127.5 840.52,-127.5 849.08,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"849.04,-131 859.04,-127.5 849.04,-124 849.04,-131\"/>\n",
       "</g>\n",
       "<!-- 2195962513104 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195962513104</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-165.5 0,-201.5 161,-201.5 161,-165.5 0,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"39.88\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"79.75,-166 79.75,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"120.38\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962518864* -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195962518864*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"224\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"224\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962513104&#45;&gt;2195962518864* -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195962513104&#45;&gt;2195962518864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M137.78,-165.14C145.62,-162.37 153.54,-159.44 161,-156.5 170.9,-152.59 181.51,-147.97 191.1,-143.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"192.42,-146.86 200.04,-139.5 189.49,-140.51 192.42,-146.86\"/>\n",
       "</g>\n",
       "<!-- 2195962607360 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195962607360</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"574,-137.5 574,-173.5 735,-173.5 735,-137.5 574,-137.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"613.88\" y=\"-150.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.8210</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"653.75,-138 653.75,-173.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"694.38\" y=\"-150.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962607360&#45;&gt;2195962513536+ -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195962607360&#45;&gt;2195962513536+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M735.35,-139.7C744.09,-137.97 752.64,-136.28 760.46,-134.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"761.08,-138.18 770.21,-132.8 759.72,-131.31 761.08,-138.18\"/>\n",
       "</g>\n",
       "<!-- 2195962518816 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195962518816</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-55.5 0,-91.5 161,-91.5 161,-55.5 0,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"39.88\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"79.75,-56 79.75,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"120.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962516416* -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195962516416*</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"224\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"224\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962518816&#45;&gt;2195962516416* -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195962518816&#45;&gt;2195962516416*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M161.35,-73.5C169.74,-73.5 177.96,-73.5 185.52,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"185.28,-77 195.28,-73.5 185.28,-70 185.28,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962513200 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195962513200</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"1148,-109.5 1148,-145.5 1309,-145.5 1309,-109.5 1148,-109.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1187.88\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9525</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1227.75,-110 1227.75,-145.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1268.38\" y=\"-122.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513200tanh&#45;&gt;2195962513200 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195962513200tanh&#45;&gt;2195962513200</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1112.28,-127.5C1119.4,-127.5 1127.52,-127.5 1136.08,-127.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1136.04,-131 1146.04,-127.5 1136.04,-124 1136.04,-131\"/>\n",
       "</g>\n",
       "<!-- 2195962597184 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962597184</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-0.5 0,-36.5 161,-36.5 161,-0.5 0,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"39.88\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1861</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"79.75,-1 79.75,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"120.38\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962597184&#45;&gt;2195962516416* -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195962597184&#45;&gt;2195962516416*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M135.58,-36.96C144.12,-40.04 152.83,-43.29 161,-46.5 170.76,-50.34 181.27,-54.79 190.8,-58.95\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.12,-62.04 199.68,-62.88 191.95,-55.63 189.12,-62.04\"/>\n",
       "</g>\n",
       "<!-- 2195962518864 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195962518864</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"287,-110.5 287,-146.5 448,-146.5 448,-110.5 287,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"326.88\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.4788</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"366.75,-111 366.75,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"407.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962515312+ -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195962515312+</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"511\" cy=\"-100.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"511\" y=\"-95.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962518864&#45;&gt;2195962515312+ -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195962518864&#45;&gt;2195962515312+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M448.35,-112.7C457.09,-110.97 465.64,-109.28 473.46,-107.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"474.08,-111.18 483.21,-105.8 472.72,-104.31 474.08,-111.18\"/>\n",
       "</g>\n",
       "<!-- 2195962518864*&#45;&gt;2195962518864 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962518864*&#45;&gt;2195962518864</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M251.28,-128.5C258.4,-128.5 266.52,-128.5 275.08,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"275.04,-132 285.04,-128.5 275.04,-125 275.04,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962605872 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962605872</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"0,-110.5 0,-146.5 161,-146.5 161,-110.5 0,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"39.88\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2394</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"79.75,-111 79.75,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"120.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962605872&#45;&gt;2195962518864* -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195962605872&#45;&gt;2195962518864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M161.35,-128.5C169.74,-128.5 177.96,-128.5 185.52,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"185.28,-132 195.28,-128.5 185.28,-125 185.28,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962515312 -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195962515312</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"574,-82.5 574,-118.5 735,-118.5 735,-82.5 574,-82.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"613.88\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 1.0371</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"653.75,-83 653.75,-118.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"694.38\" y=\"-95.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962515312&#45;&gt;2195962513536+ -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195962515312&#45;&gt;2195962513536+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M735.35,-115.74C744.09,-117.4 752.64,-119.04 760.46,-120.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"759.73,-123.95 770.21,-122.39 761.04,-117.08 759.73,-123.95\"/>\n",
       "</g>\n",
       "<!-- 2195962515312+&#45;&gt;2195962515312 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195962515312+&#45;&gt;2195962515312</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M538.28,-100.5C545.4,-100.5 553.52,-100.5 562.08,-100.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"562.04,-104 572.04,-100.5 562.04,-97 562.04,-104\"/>\n",
       "</g>\n",
       "<!-- 2195962516416 -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195962516416</title>\n",
       "<polygon fill=\"none\" stroke=\"black\" points=\"287,-55.5 287,-91.5 448,-91.5 448,-55.5 287,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"326.88\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5583</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"366.75,-56 366.75,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"407.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962516416&#45;&gt;2195962515312+ -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195962516416&#45;&gt;2195962515312+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M448.35,-88.74C457.09,-90.4 465.64,-92.04 473.46,-93.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"472.73,-96.95 483.21,-95.39 474.04,-90.08 472.73,-96.95\"/>\n",
       "</g>\n",
       "<!-- 2195962516416*&#45;&gt;2195962516416 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195962516416*&#45;&gt;2195962516416</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M251.28,-73.5C258.4,-73.5 266.52,-73.5 275.08,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"275.04,-77 285.04,-73.5 275.04,-70 275.04,-77\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff4990e560>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 画出该层中第3个神经元的计算图\n",
    "draw_dot(Ls[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7312967c-d125-4e04-b093-fac5f1e6efb4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 多层感知机\n",
    "class MLP:\n",
    "    def __init__(self, nin, nouts): # nouts 是列表，表示各层的神经元数量\n",
    "        print(f\"创建 MLP：输入维度: {nin}，隐藏层结构：{nouts}\")\n",
    "        \n",
    "        sz = [nin] + nouts # 构建完整的网络尺寸列表\n",
    "        self.layers = [Layer(sz[i], sz[i + 1]) for i in range(len(nouts))] # 创建层列表，每层连接相邻的尺寸\n",
    "\n",
    "        print(f\"共创建了 {len(self.layers)} 层\")\n",
    "    \n",
    "    def __call__(self, x):\n",
    "        for layer in self.layers:\n",
    "            x = layer(x) # 依次通过每一层，前一层的输出作为后一层的输入\n",
    "        print(f\"-----------------------------------> MPL 输出: {[val.data for val in x]}\")\n",
    "        return x\n",
    "\n",
    "    def parameters(self):\n",
    "        return [p for layer in self.layers for p in layer.parameters()] # 收集每一层的参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "20a794a2-06c1-4246-b2e8-27ea03a6875e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "创建 MLP：输入维度: 2，隐藏层结构：[3, 2, 1]\n",
      "创建 Layer: 2 个输入维度，3 个输出维度\n",
      "创建 Neuron: 2 个输入\n",
      "创建 Neuron: 2 个输入\n",
      "创建 Neuron: 2 个输入\n",
      "创建了 3 个神经元\n",
      "创建 Layer: 3 个输入维度，2 个输出维度\n",
      "创建 Neuron: 3 个输入\n",
      "创建 Neuron: 3 个输入\n",
      "创建了 2 个神经元\n",
      "创建 Layer: 2 个输入维度，1 个输出维度\n",
      "创建 Neuron: 2 个输入\n",
      "创建了 1 个神经元\n",
      "共创建了 3 层\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['-0.4733', '-0.4700']\n",
      "偏置 b: 0.6977\n",
      "w0x0: -0.4733 × 2.0 = -0.9466\n",
      "w1x1: -0.4700 × 3.0 = -1.4100\n",
      "加权和 + 偏置: -2.3565 + 0.6977 = -1.6588\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-1.6588) = -0.9301\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['0.2887', '-0.8151']\n",
      "偏置 b: -0.6765\n",
      "w0x0: 0.2887 × 2.0 = 0.5773\n",
      "w1x1: -0.8151 × 3.0 = -2.4452\n",
      "加权和 + 偏置: -1.8679 + -0.6765 = -2.5444\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-2.5444) = -0.9877\n",
      "输入 x: [2.0, 3.0]\n",
      "权重 w: ['-0.0080', '0.3072']\n",
      "偏置 b: -0.2102\n",
      "w0x0: -0.0080 × 2.0 = -0.0159\n",
      "w1x1: 0.3072 × 3.0 = 0.9215\n",
      "加权和 + 偏置: 0.9056 + -0.2102 = 0.6954\n",
      "-----------------------------------> 激活（神经元输出）: tanh(0.6954) = 0.6014\n",
      "-----------------------------------> Layer 输出: [-0.9300555414825895, -0.9877447884873328, 0.6014335046664834]\n",
      "输入 x: [Value(data=-0.9300555414825895, grad=0.0), Value(data=-0.9877447884873328, grad=0.0), Value(data=0.6014335046664834, grad=0.0)]\n",
      "权重 w: ['0.2353', '0.9452', '-0.6078']\n",
      "偏置 b: -0.9230\n",
      "w0x0: 0.2353 × Value(data=-0.9300555414825895, grad=0.0) = -0.2188\n",
      "w1x1: 0.9452 × Value(data=-0.9877447884873328, grad=0.0) = -0.9336\n",
      "w2x2: -0.6078 × Value(data=0.6014335046664834, grad=0.0) = -0.3656\n",
      "加权和 + 偏置: -1.5181 + -0.9230 = -2.4411\n",
      "-----------------------------------> 激活（神经元输出）: tanh(-2.4411) = -0.9850\n",
      "输入 x: [Value(data=-0.9300555414825895, grad=0.0), Value(data=-0.9877447884873328, grad=0.0), Value(data=0.6014335046664834, grad=0.0)]\n",
      "权重 w: ['-0.3029', '-0.1422', '0.9346']\n",
      "偏置 b: -0.4200\n",
      "w0x0: -0.3029 × Value(data=-0.9300555414825895, grad=0.0) = 0.2817\n",
      "w1x1: -0.1422 × Value(data=-0.9877447884873328, grad=0.0) = 0.1405\n",
      "w2x2: 0.9346 × Value(data=0.6014335046664834, grad=0.0) = 0.5621\n",
      "加权和 + 偏置: 0.9843 + -0.4200 = 0.5643\n",
      "-----------------------------------> 激活（神经元输出）: tanh(0.5643) = 0.5112\n",
      "-----------------------------------> Layer 输出: [-0.9849521597130347, 0.511176016892223]\n",
      "输入 x: [Value(data=-0.9849521597130347, grad=0.0), Value(data=0.511176016892223, grad=0.0)]\n",
      "权重 w: ['-0.0243', '0.1561']\n",
      "偏置 b: 0.8591\n",
      "w0x0: -0.0243 × Value(data=-0.9849521597130347, grad=0.0) = 0.0239\n",
      "w1x1: 0.1561 × Value(data=0.511176016892223, grad=0.0) = 0.0798\n",
      "加权和 + 偏置: 0.1037 + 0.8591 = 0.9628\n",
      "-----------------------------------> 激活（神经元输出）: tanh(0.9628) = 0.7455\n",
      "-----------------------------------> Layer 输出: [0.7455447839920796]\n",
      "-----------------------------------> MPL 输出: [0.7455447839920796]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[Value(data=0.7455447839920796, grad=0.0)]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = [2.0, 3.0] # 输入向量，2 个特征\n",
    "n = MLP(2, [3, 2, 1]) # 创建 MLP：2 个输入 → 3 个神经元 → 2 个神经元 → 1 个输出\n",
    "Ms = n(x) # 前向传播\n",
    "Ms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "97e01d62-e287-4323-bbc8-dee3087060c5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "初始输入: 2 个特征\n",
      "第 1 层: 3 个神经元（隐藏层 1）\n",
      "第 2 层: 2 个神经元（隐藏层 2）\n",
      "输 3 层: 1 个神经元（输出层）\n",
      "最终输出: 1 个值\n"
     ]
    }
   ],
   "source": [
    "print(f\"初始输入: {len(x)} 个特征\")\n",
    "print(f\"第 1 层: {len(n.layers[0].neurons)} 个神经元（隐藏层 1）\") \n",
    "print(f\"第 2 层: {len(n.layers[1].neurons)} 个神经元（隐藏层 2）\")\n",
    "print(f\"输 3 层: {len(n.layers[2].neurons)} 个神经元（输出层）\")\n",
    "print(f\"最终输出: {len(Ms)} 个值\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "84198e9f-12c1-494a-9ff3-f1ea7e6b75c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Value(data=-0.4732805093115171, grad=0.0),\n",
       " Value(data=-0.4699872421808693, grad=0.0),\n",
       " Value(data=0.697721454113198, grad=0.0),\n",
       " Value(data=0.2886608154389909, grad=0.0),\n",
       " Value(data=-0.8150791428888908, grad=0.0),\n",
       " Value(data=-0.67648656562956, grad=0.0),\n",
       " Value(data=-0.007957391314353357, grad=0.0),\n",
       " Value(data=0.3071704711761891, grad=0.0),\n",
       " Value(data=-0.21020658132721204, grad=0.0),\n",
       " Value(data=0.23529727256449173, grad=0.0),\n",
       " Value(data=0.9452262782043408, grad=0.0),\n",
       " Value(data=-0.6078474544401229, grad=0.0),\n",
       " Value(data=-0.922996119471734, grad=0.0),\n",
       " Value(data=-0.30287106516207696, grad=0.0),\n",
       " Value(data=-0.1422317976022589, grad=0.0),\n",
       " Value(data=0.934633739621384, grad=0.0),\n",
       " Value(data=-0.41997518800299827, grad=0.0),\n",
       " Value(data=-0.024303086365537352, grad=0.0),\n",
       " Value(data=0.1560713535468321, grad=0.0),\n",
       " Value(data=0.8591312552753596, grad=0.0)]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n.parameters() # MLP 的参数数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "0bf4fef5-b94c-4772-935b-ca075291b22b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"3945pt\" height=\"624pt\"\n",
       " viewBox=\"0.00 0.00 3945.00 624.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 620)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-620 3941,-620 3941,4 -4,4\"/>\n",
       "<!-- 2195963168800 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195963168800</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1459.75,-259.5 1459.75,-295.5 1620.75,-295.5 1620.75,-259.5 1459.75,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1405</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1539.5,-260 1539.5,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1580.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169040+ -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195963169040+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1686\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1686\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963168800&#45;&gt;2195963169040+ -->\n",
       "<g id=\"edge64\" class=\"edge\">\n",
       "<title>2195963168800&#45;&gt;2195963169040+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1621.11,-277.5C1630.23,-277.5 1639.17,-277.5 1647.35,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1647.19,-281 1657.19,-277.5 1647.19,-274 1647.19,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963168800* -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195963168800*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1394.5\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1394.5\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963168800*&#45;&gt;2195963168800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195963168800*&#45;&gt;2195963168800</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1421.87,-277.5C1429.67,-277.5 1438.7,-277.5 1448.2,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1448.02,-281 1458.02,-277.5 1448.02,-274 1448.02,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963170864 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195963170864</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"3489,-230.5 3489,-266.5 3650,-266.5 3650,-230.5 3489,-230.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3528.88\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9628</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3568.75,-231 3568.75,-266.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3609.38\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963171104tanh -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>2195963171104tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3713\" cy=\"-248.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3713\" y=\"-243.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963170864&#45;&gt;2195963171104tanh -->\n",
       "<g id=\"edge66\" class=\"edge\">\n",
       "<title>2195963170864&#45;&gt;2195963171104tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3650.35,-248.5C3658.74,-248.5 3666.96,-248.5 3674.52,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3674.28,-252 3684.28,-248.5 3674.28,-245 3674.28,-252\"/>\n",
       "</g>\n",
       "<!-- 2195963170864+ -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195963170864+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3426\" cy=\"-248.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3426\" y=\"-243.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963170864+&#45;&gt;2195963170864 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195963170864+&#45;&gt;2195963170864</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3453.28,-248.5C3460.4,-248.5 3468.52,-248.5 3477.08,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3477.04,-252 3487.04,-248.5 3477.04,-245 3477.04,-252\"/>\n",
       "</g>\n",
       "<!-- 2195962605632 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195962605632</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1168.25,-149.5 1168.25,-185.5 1329.25,-185.5 1329.25,-149.5 1168.25,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6954</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1248,-150 1248,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1288.62\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962596416tanh -->\n",
       "<g id=\"node52\" class=\"node\">\n",
       "<title>2195962596416tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1394.5\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1394.5\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962605632&#45;&gt;2195962596416tanh -->\n",
       "<g id=\"edge69\" class=\"edge\">\n",
       "<title>2195962605632&#45;&gt;2195962596416tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1329.61,-167.5C1338.73,-167.5 1347.67,-167.5 1355.85,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1355.69,-171 1365.69,-167.5 1355.69,-164 1355.69,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962605632+ -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195962605632+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1103\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962605632+&#45;&gt;2195962605632 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962605632+&#45;&gt;2195962605632</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-167.5C1138.17,-167.5 1147.2,-167.5 1156.7,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1156.52,-171 1166.52,-167.5 1156.52,-164 1156.52,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962511472 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962511472</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"874.5,-259.5 874.5,-295.5 1040,-295.5 1040,-259.5 874.5,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.5444</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-260 958.75,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962607600tanh -->\n",
       "<g id=\"node94\" class=\"node\">\n",
       "<title>2195962607600tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1103\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962511472&#45;&gt;2195962607600tanh -->\n",
       "<g id=\"edge55\" class=\"edge\">\n",
       "<title>2195962511472&#45;&gt;2195962607600tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-277.5C1048.64,-277.5 1056.9,-277.5 1064.48,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.27,-281 1074.27,-277.5 1064.27,-274 1064.27,-281\"/>\n",
       "</g>\n",
       "<!-- 2195962511472+ -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962511472+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"811.5\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962511472+&#45;&gt;2195962511472 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195962511472+&#45;&gt;2195962511472</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-277.5C845.97,-277.5 854.07,-277.5 862.64,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"862.59,-281 872.59,-277.5 862.59,-274 862.59,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963166880 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195963166880</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1457.5,-424.5 1457.5,-460.5 1623,-460.5 1623,-424.5 1457.5,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.2188</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1541.75,-425 1541.75,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1582.38\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963167360+ -->\n",
       "<g id=\"node33\" class=\"node\">\n",
       "<title>2195963167360+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1686\" cy=\"-332.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1686\" y=\"-327.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963166880&#45;&gt;2195963167360+ -->\n",
       "<g id=\"edge63\" class=\"edge\">\n",
       "<title>2195963166880&#45;&gt;2195963167360+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1608.52,-424.12C1613.61,-421.59 1618.51,-418.73 1623,-415.5 1643.35,-400.85 1659.92,-377.54 1670.8,-359.35\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1673.7,-361.32 1675.63,-350.91 1667.62,-357.84 1673.7,-361.32\"/>\n",
       "</g>\n",
       "<!-- 2195963166880* -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195963166880*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1394.5\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1394.5\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963166880*&#45;&gt;2195963166880 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195963166880*&#45;&gt;2195963166880</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1421.87,-442.5C1428.97,-442.5 1437.07,-442.5 1445.64,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1445.59,-446 1455.59,-442.5 1445.59,-439 1445.59,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962513584 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962513584</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"874.5,-424.5 874.5,-460.5 1040,-460.5 1040,-424.5 874.5,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.6588</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-425 958.75,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962526112tanh -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>2195962526112tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1103\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1103\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962513584&#45;&gt;2195962526112tanh -->\n",
       "<g id=\"edge79\" class=\"edge\">\n",
       "<title>2195962513584&#45;&gt;2195962526112tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-442.5C1048.64,-442.5 1056.9,-442.5 1064.48,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.27,-446 1074.27,-442.5 1064.27,-439 1064.27,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962513584+ -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195962513584+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"811.5\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962513584+&#45;&gt;2195962513584 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195962513584+&#45;&gt;2195962513584</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-442.5C845.97,-442.5 854.07,-442.5 862.64,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"862.59,-446 872.59,-442.5 862.59,-439 862.59,-446\"/>\n",
       "</g>\n",
       "<!-- 2195963169040 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195963169040</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1751.25,-259.5 1751.25,-295.5 1912.25,-295.5 1912.25,-259.5 1751.25,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1791.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.4222</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1831,-260 1831,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1871.62\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169520+ -->\n",
       "<g id=\"node38\" class=\"node\">\n",
       "<title>2195963169520+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1977.5\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1977.5\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963169040&#45;&gt;2195963169520+ -->\n",
       "<g id=\"edge78\" class=\"edge\">\n",
       "<title>2195963169040&#45;&gt;2195963169520+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1897.24,-259.06C1903.23,-256.5 1909.07,-253.66 1914.5,-250.5 1929.39,-241.84 1943.8,-229.17 1954.98,-218.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1957.33,-220.67 1961.8,-211.06 1952.31,-215.79 1957.33,-220.67\"/>\n",
       "</g>\n",
       "<!-- 2195963169040+&#45;&gt;2195963169040 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195963169040+&#45;&gt;2195963169040</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1713.37,-277.5C1721.17,-277.5 1730.2,-277.5 1739.7,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1739.52,-281 1749.52,-277.5 1739.52,-274 1739.52,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963171104 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195963171104</title>\n",
       "<polygon fill=\"lightyellow\" stroke=\"black\" points=\"3776,-230.5 3776,-266.5 3937,-266.5 3937,-230.5 3776,-230.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3815.88\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.7455</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3855.75,-231 3855.75,-266.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3896.38\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963171104tanh&#45;&gt;2195963171104 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195963171104tanh&#45;&gt;2195963171104</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3740.28,-248.5C3747.4,-248.5 3755.52,-248.5 3764.08,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3764.04,-252 3774.04,-248.5 3764.04,-245 3764.04,-252\"/>\n",
       "</g>\n",
       "<!-- 2195962519872 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>2195962519872</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1168.25,-479.5 1168.25,-515.5 1329.25,-515.5 1329.25,-479.5 1168.25,-479.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-492.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2353</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1248,-480 1248,-515.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1288.62\" y=\"-492.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962519872&#45;&gt;2195963166880* -->\n",
       "<g id=\"edge62\" class=\"edge\">\n",
       "<title>2195962519872&#45;&gt;2195963166880*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1308.08,-479.07C1315.99,-476.33 1323.98,-473.43 1331.5,-470.5 1341.41,-466.64 1352.03,-462.02 1361.62,-457.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1362.94,-460.92 1370.56,-453.55 1360.01,-454.56 1362.94,-460.92\"/>\n",
       "</g>\n",
       "<!-- 2195962513776 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>2195962513776</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"293.75,-302.5 293.75,-338.5 454.75,-338.5 454.75,-302.5 293.75,-302.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5773</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-303 373.5,-338.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962520112+ -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>2195962520112+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"520\" cy=\"-304.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-299.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962513776&#45;&gt;2195962520112+ -->\n",
       "<g id=\"edge41\" class=\"edge\">\n",
       "<title>2195962513776&#45;&gt;2195962520112+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M455.11,-311.61C464.32,-310.59 473.34,-309.58 481.58,-308.66\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.96,-312.14 491.51,-307.56 481.18,-305.19 481.96,-312.14\"/>\n",
       "</g>\n",
       "<!-- 2195962513776* -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>2195962513776*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"228.5\" cy=\"-320.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-315.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962513776*&#45;&gt;2195962513776 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195962513776*&#45;&gt;2195962513776</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-320.5C263.67,-320.5 272.7,-320.5 282.2,-320.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"282.02,-324 292.02,-320.5 282.02,-317 282.02,-324\"/>\n",
       "</g>\n",
       "<!-- 2195963167120 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>2195963167120</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1457.5,-314.5 1457.5,-350.5 1623,-350.5 1623,-314.5 1457.5,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9336</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1541.75,-315 1541.75,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1582.38\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963167120&#45;&gt;2195963167360+ -->\n",
       "<g id=\"edge75\" class=\"edge\">\n",
       "<title>2195963167120&#45;&gt;2195963167360+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1623.2,-332.5C1631.64,-332.5 1639.9,-332.5 1647.48,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1647.27,-336 1657.27,-332.5 1647.27,-329 1647.27,-336\"/>\n",
       "</g>\n",
       "<!-- 2195963167120* -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>2195963167120*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1394.5\" cy=\"-332.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1394.5\" y=\"-327.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963167120*&#45;&gt;2195963167120 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195963167120*&#45;&gt;2195963167120</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1421.87,-332.5C1428.97,-332.5 1437.07,-332.5 1445.64,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1445.59,-336 1455.59,-332.5 1445.59,-329 1445.59,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962526112 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>2195962526112</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1166,-424.5 1166,-460.5 1331.5,-460.5 1331.5,-424.5 1166,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9301</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-425 1250.25,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962526112&#45;&gt;2195963166880* -->\n",
       "<g id=\"edge42\" class=\"edge\">\n",
       "<title>2195962526112&#45;&gt;2195963166880*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1331.7,-442.5C1340.14,-442.5 1348.4,-442.5 1355.98,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1355.77,-446 1365.77,-442.5 1355.77,-439 1355.77,-446\"/>\n",
       "</g>\n",
       "<!-- 2195963168560* -->\n",
       "<g id=\"node90\" class=\"node\">\n",
       "<title>2195963168560*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1394.5\" cy=\"-387.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1394.5\" y=\"-382.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962526112&#45;&gt;2195963168560* -->\n",
       "<g id=\"edge82\" class=\"edge\">\n",
       "<title>2195962526112&#45;&gt;2195963168560*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1308.08,-424.07C1315.99,-421.33 1323.98,-418.43 1331.5,-415.5 1341.41,-411.64 1352.03,-407.02 1361.62,-402.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1362.94,-405.92 1370.56,-398.55 1360.01,-399.56 1362.94,-405.92\"/>\n",
       "</g>\n",
       "<!-- 2195962526112tanh&#45;&gt;2195962526112 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195962526112tanh&#45;&gt;2195962526112</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-442.5C1137.47,-442.5 1145.57,-442.5 1154.14,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1154.09,-446 1164.09,-442.5 1154.09,-439 1154.09,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962515888 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>2195962515888</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1166,-369.5 1166,-405.5 1331.5,-405.5 1331.5,-369.5 1166,-369.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.3029</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-370 1250.25,-405.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962515888&#45;&gt;2195963168560* -->\n",
       "<g id=\"edge43\" class=\"edge\">\n",
       "<title>2195962515888&#45;&gt;2195963168560*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1331.7,-387.5C1340.14,-387.5 1348.4,-387.5 1355.98,-387.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1355.77,-391 1365.77,-387.5 1355.77,-384 1355.77,-391\"/>\n",
       "</g>\n",
       "<!-- 2195963169280 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>2195963169280</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1751.25,-149.5 1751.25,-185.5 1912.25,-185.5 1912.25,-149.5 1751.25,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1791.12\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5621</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1831,-150 1831,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1871.62\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169280&#45;&gt;2195963169520+ -->\n",
       "<g id=\"edge37\" class=\"edge\">\n",
       "<title>2195963169280&#45;&gt;2195963169520+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1912.61,-182.5C1922.1,-184.28 1931.4,-186.03 1939.84,-187.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1939.16,-191.05 1949.64,-189.45 1940.46,-184.17 1939.16,-191.05\"/>\n",
       "</g>\n",
       "<!-- 2195963169280* -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>2195963169280*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1686\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1686\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963169280*&#45;&gt;2195963169280 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195963169280*&#45;&gt;2195963169280</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1713.37,-167.5C1721.17,-167.5 1730.2,-167.5 1739.7,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1739.52,-171 1749.52,-167.5 1739.52,-164 1739.52,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962520064 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>2195962520064</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1459.75,-94.5 1459.75,-130.5 1620.75,-130.5 1620.75,-94.5 1459.75,-94.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-107.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9346</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1539.5,-95 1539.5,-130.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1580.12\" y=\"-107.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962520064&#45;&gt;2195963169280* -->\n",
       "<g id=\"edge81\" class=\"edge\">\n",
       "<title>2195962520064&#45;&gt;2195963169280*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1599.58,-130.93C1607.49,-133.67 1615.48,-136.57 1623,-139.5 1632.91,-143.36 1643.53,-147.98 1653.12,-152.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1651.51,-155.44 1662.06,-156.45 1654.44,-149.08 1651.51,-155.44\"/>\n",
       "</g>\n",
       "<!-- 2195962520112 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>2195962520112</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"583,-286.5 583,-322.5 748.5,-322.5 748.5,-286.5 583,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.8679</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-287 667.25,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962520112&#45;&gt;2195962511472+ -->\n",
       "<g id=\"edge44\" class=\"edge\">\n",
       "<title>2195962520112&#45;&gt;2195962511472+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-289.11C757.5,-287.46 766.08,-285.84 773.92,-284.37\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"774.51,-287.82 783.7,-282.53 773.22,-280.94 774.51,-287.82\"/>\n",
       "</g>\n",
       "<!-- 2195962520112+&#45;&gt;2195962520112 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962520112+&#45;&gt;2195962520112</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-304.5C554.47,-304.5 562.57,-304.5 571.14,-304.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-308 581.09,-304.5 571.09,-301 571.09,-308\"/>\n",
       "</g>\n",
       "<!-- 2195962516032 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>2195962516032</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-357.5 2.25,-393.5 163.25,-393.5 163.25,-357.5 2.25,-357.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-370.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-358 82,-393.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-370.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962516032&#45;&gt;2195962513776* -->\n",
       "<g id=\"edge90\" class=\"edge\">\n",
       "<title>2195962516032&#45;&gt;2195962513776*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-357.07C149.99,-354.33 157.98,-351.43 165.5,-348.5 175.41,-344.64 186.03,-340.02 195.62,-335.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.94,-338.92 204.56,-331.55 194.01,-332.56 196.94,-338.92\"/>\n",
       "</g>\n",
       "<!-- 2195962511952 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>2195962511952</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-579.5 2.25,-615.5 163.25,-615.5 163.25,-579.5 2.25,-579.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-592.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-580 82,-615.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-592.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962526976* -->\n",
       "<g id=\"node64\" class=\"node\">\n",
       "<title>2195962526976*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"228.5\" cy=\"-542.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-537.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962511952&#45;&gt;2195962526976* -->\n",
       "<g id=\"edge56\" class=\"edge\">\n",
       "<title>2195962511952&#45;&gt;2195962526976*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-579.07C149.99,-576.33 157.98,-573.43 165.5,-570.5 175.41,-566.64 186.03,-562.02 195.62,-557.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"196.94,-560.92 204.56,-553.55 194.01,-554.56 196.94,-560.92\"/>\n",
       "</g>\n",
       "<!-- 2195963167360 -->\n",
       "<g id=\"node32\" class=\"node\">\n",
       "<title>2195963167360</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1749,-314.5 1749,-350.5 1914.5,-350.5 1914.5,-314.5 1749,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1791.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.1525</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1833.25,-315 1833.25,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1873.88\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963167840+ -->\n",
       "<g id=\"node55\" class=\"node\">\n",
       "<title>2195963167840+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1977.5\" cy=\"-304.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1977.5\" y=\"-299.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963167360&#45;&gt;2195963167840+ -->\n",
       "<g id=\"edge87\" class=\"edge\">\n",
       "<title>2195963167360&#45;&gt;2195963167840+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1914.7,-316.54C1923.5,-314.82 1932.08,-313.15 1939.92,-311.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1940.55,-315.07 1949.7,-309.72 1939.21,-308.2 1940.55,-315.07\"/>\n",
       "</g>\n",
       "<!-- 2195963167360+&#45;&gt;2195963167360 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195963167360+&#45;&gt;2195963167360</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1713.37,-332.5C1720.47,-332.5 1728.57,-332.5 1737.14,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1737.09,-336 1747.09,-332.5 1737.09,-329 1737.09,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962606256 -->\n",
       "<g id=\"node34\" class=\"node\">\n",
       "<title>2195962606256</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"583,-110.5 583,-146.5 748.5,-146.5 748.5,-110.5 583,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0159</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-111 667.25,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594592+ -->\n",
       "<g id=\"node67\" class=\"node\">\n",
       "<title>2195962594592+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"811.5\" cy=\"-114.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"811.5\" y=\"-109.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962606256&#45;&gt;2195962594592+ -->\n",
       "<g id=\"edge52\" class=\"edge\">\n",
       "<title>2195962606256&#45;&gt;2195962594592+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-120.52C757.14,-119.7 765.4,-118.89 772.98,-118.15\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"773.16,-121.65 782.77,-117.2 772.48,-114.69 773.16,-121.65\"/>\n",
       "</g>\n",
       "<!-- 2195962606256* -->\n",
       "<g id=\"node35\" class=\"node\">\n",
       "<title>2195962606256*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"520\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962606256*&#45;&gt;2195962606256 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>2195962606256*&#45;&gt;2195962606256</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-128.5C554.47,-128.5 562.57,-128.5 571.14,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-132 581.09,-128.5 571.09,-125 571.09,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962516176 -->\n",
       "<g id=\"node36\" class=\"node\">\n",
       "<title>2195962516176</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-247.5 0,-283.5 165.5,-283.5 165.5,-247.5 0,-247.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.8151</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-248 84.25,-283.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962512864* -->\n",
       "<g id=\"node76\" class=\"node\">\n",
       "<title>2195962512864*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"228.5\" cy=\"-265.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-260.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962516176&#45;&gt;2195962512864* -->\n",
       "<g id=\"edge70\" class=\"edge\">\n",
       "<title>2195962516176&#45;&gt;2195962512864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.7,-265.5C174.14,-265.5 182.4,-265.5 189.98,-265.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.77,-269 199.77,-265.5 189.77,-262 189.77,-269\"/>\n",
       "</g>\n",
       "<!-- 2195963169520 -->\n",
       "<g id=\"node37\" class=\"node\">\n",
       "<title>2195963169520</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2042.75,-176.5 2042.75,-212.5 2203.75,-212.5 2203.75,-176.5 2042.75,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2082.62\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9843</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2122.5,-177 2122.5,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2163.12\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169664+ -->\n",
       "<g id=\"node44\" class=\"node\">\n",
       "<title>2195963169664+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2269\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2269\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963169520&#45;&gt;2195963169664+ -->\n",
       "<g id=\"edge47\" class=\"edge\">\n",
       "<title>2195963169520&#45;&gt;2195963169664+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2204.11,-194.5C2213.23,-194.5 2222.17,-194.5 2230.35,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2230.19,-198 2240.19,-194.5 2230.19,-191 2230.19,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169520+&#45;&gt;2195963169520 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>2195963169520+&#45;&gt;2195963169520</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2004.87,-194.5C2012.67,-194.5 2021.7,-194.5 2031.2,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2031.02,-198 2041.02,-194.5 2031.02,-191 2031.02,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962594064 -->\n",
       "<g id=\"node39\" class=\"node\">\n",
       "<title>2195962594064</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"293.75,-165.5 293.75,-201.5 454.75,-201.5 454.75,-165.5 293.75,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-166 373.5,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594064&#45;&gt;2195962606256* -->\n",
       "<g id=\"edge73\" class=\"edge\">\n",
       "<title>2195962594064&#45;&gt;2195962606256*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M430.88,-165.12C439.66,-162.03 448.61,-158.76 457,-155.5 466.78,-151.7 477.29,-147.27 486.82,-143.1\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"487.97,-146.42 495.7,-139.17 485.14,-140.02 487.97,-146.42\"/>\n",
       "</g>\n",
       "<!-- 2195962520400 -->\n",
       "<g id=\"node40\" class=\"node\">\n",
       "<title>2195962520400</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2040.5,-121.5 2040.5,-157.5 2206,-157.5 2206,-121.5 2040.5,-121.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2082.62\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4200</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2124.75,-122 2124.75,-157.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2165.38\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962520400&#45;&gt;2195963169664+ -->\n",
       "<g id=\"edge59\" class=\"edge\">\n",
       "<title>2195962520400&#45;&gt;2195963169664+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2182.58,-157.93C2190.49,-160.67 2198.48,-163.57 2206,-166.5 2215.91,-170.36 2226.53,-174.98 2236.12,-179.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2234.51,-182.44 2245.06,-183.45 2237.44,-176.08 2234.51,-182.44\"/>\n",
       "</g>\n",
       "<!-- 2195963167600 -->\n",
       "<g id=\"node41\" class=\"node\">\n",
       "<title>2195963167600</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1749,-204.5 1749,-240.5 1914.5,-240.5 1914.5,-204.5 1749,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1791.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.3656</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1833.25,-205 1833.25,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1873.88\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963167600&#45;&gt;2195963167840+ -->\n",
       "<g id=\"edge36\" class=\"edge\">\n",
       "<title>2195963167600&#45;&gt;2195963167840+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1895.03,-240.97C1901.77,-243.8 1908.39,-246.98 1914.5,-250.5 1929.08,-258.91 1943.39,-271.03 1954.58,-281.66\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1951.81,-283.85 1961.4,-288.35 1956.71,-278.85 1951.81,-283.85\"/>\n",
       "</g>\n",
       "<!-- 2195963167600* -->\n",
       "<g id=\"node42\" class=\"node\">\n",
       "<title>2195963167600*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1686\" cy=\"-222.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1686\" y=\"-217.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963167600*&#45;&gt;2195963167600 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>2195963167600*&#45;&gt;2195963167600</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1713.37,-222.5C1720.47,-222.5 1728.57,-222.5 1737.14,-222.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1737.09,-226 1747.09,-222.5 1737.09,-219 1737.09,-226\"/>\n",
       "</g>\n",
       "<!-- 2195963169664 -->\n",
       "<g id=\"node43\" class=\"node\">\n",
       "<title>2195963169664</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2334.25,-176.5 2334.25,-212.5 2495.25,-212.5 2495.25,-176.5 2334.25,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2374.12\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5643</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2414,-177 2414,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2454.62\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169904tanh -->\n",
       "<g id=\"node57\" class=\"node\">\n",
       "<title>2195963169904tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2560.5\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2560.5\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963169664&#45;&gt;2195963169904tanh -->\n",
       "<g id=\"edge48\" class=\"edge\">\n",
       "<title>2195963169664&#45;&gt;2195963169904tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2495.61,-194.5C2504.73,-194.5 2513.67,-194.5 2521.85,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2521.69,-198 2531.69,-194.5 2521.69,-191 2521.69,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169664+&#45;&gt;2195963169664 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>2195963169664+&#45;&gt;2195963169664</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2296.37,-194.5C2304.17,-194.5 2313.2,-194.5 2322.7,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2322.52,-198 2332.52,-194.5 2322.52,-191 2322.52,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962514304 -->\n",
       "<g id=\"node45\" class=\"node\">\n",
       "<title>2195962514304</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"293.75,-55.5 293.75,-91.5 454.75,-91.5 454.75,-55.5 293.75,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.3072</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-56 373.5,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962596512* -->\n",
       "<g id=\"node60\" class=\"node\">\n",
       "<title>2195962596512*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"520\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962514304&#45;&gt;2195962596512* -->\n",
       "<g id=\"edge96\" class=\"edge\">\n",
       "<title>2195962514304&#45;&gt;2195962596512*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M455.11,-73.5C464.23,-73.5 473.17,-73.5 481.35,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.19,-77 491.19,-73.5 481.19,-70 481.19,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962526688 -->\n",
       "<g id=\"node46\" class=\"node\">\n",
       "<title>2195962526688</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"874.5,-151.5 874.5,-187.5 1040,-187.5 1040,-151.5 874.5,-151.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-164.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.2102</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"958.75,-152 958.75,-187.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"999.38\" y=\"-164.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962526688&#45;&gt;2195962605632+ -->\n",
       "<g id=\"edge74\" class=\"edge\">\n",
       "<title>2195962526688&#45;&gt;2195962605632+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1040.2,-168.36C1048.64,-168.24 1056.9,-168.13 1064.48,-168.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1064.32,-171.52 1074.27,-167.89 1064.22,-164.53 1064.32,-171.52\"/>\n",
       "</g>\n",
       "<!-- 2195962520544 -->\n",
       "<g id=\"node47\" class=\"node\">\n",
       "<title>2195962520544</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"583,-231.5 583,-267.5 748.5,-267.5 748.5,-231.5 583,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6765</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-232 667.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962520544&#45;&gt;2195962511472+ -->\n",
       "<g id=\"edge35\" class=\"edge\">\n",
       "<title>2195962520544&#45;&gt;2195962511472+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M748.7,-265.46C757.5,-267.18 766.08,-268.85 773.92,-270.38\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"773.21,-273.8 783.7,-272.28 774.55,-266.93 773.21,-273.8\"/>\n",
       "</g>\n",
       "<!-- 2195962518528 -->\n",
       "<g id=\"node48\" class=\"node\">\n",
       "<title>2195962518528</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2625.75,-121.5 2625.75,-157.5 2786.75,-157.5 2786.75,-121.5 2625.75,-121.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2665.62\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1561</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2705.5,-122 2705.5,-157.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2746.12\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963170480* -->\n",
       "<g id=\"node86\" class=\"node\">\n",
       "<title>2195963170480*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2852\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2852\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962518528&#45;&gt;2195963170480* -->\n",
       "<g id=\"edge86\" class=\"edge\">\n",
       "<title>2195962518528&#45;&gt;2195963170480*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2765.58,-157.93C2773.49,-160.67 2781.48,-163.57 2789,-166.5 2798.91,-170.36 2809.53,-174.98 2819.12,-179.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2817.51,-182.44 2828.06,-183.45 2820.44,-176.08 2817.51,-182.44\"/>\n",
       "</g>\n",
       "<!-- 2195962512384 -->\n",
       "<g id=\"node49\" class=\"node\">\n",
       "<title>2195962512384</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-469.5 0,-505.5 165.5,-505.5 165.5,-469.5 0,-469.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4733</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-470 84.25,-505.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513392* -->\n",
       "<g id=\"node78\" class=\"node\">\n",
       "<title>2195962513392*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"228.5\" cy=\"-487.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"228.5\" y=\"-482.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962512384&#45;&gt;2195962513392* -->\n",
       "<g id=\"edge65\" class=\"edge\">\n",
       "<title>2195962512384&#45;&gt;2195962513392*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.7,-487.5C174.14,-487.5 182.4,-487.5 189.98,-487.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.77,-491 199.77,-487.5 189.77,-484 189.77,-491\"/>\n",
       "</g>\n",
       "<!-- 2195962516512 -->\n",
       "<g id=\"node50\" class=\"node\">\n",
       "<title>2195962516512</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1457.5,-204.5 1457.5,-240.5 1623,-240.5 1623,-204.5 1457.5,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6078</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1541.75,-205 1541.75,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1582.38\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962516512&#45;&gt;2195963167600* -->\n",
       "<g id=\"edge94\" class=\"edge\">\n",
       "<title>2195962516512&#45;&gt;2195963167600*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1623.2,-222.5C1631.64,-222.5 1639.9,-222.5 1647.48,-222.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1647.27,-226 1657.27,-222.5 1647.27,-219 1647.27,-226\"/>\n",
       "</g>\n",
       "<!-- 2195962596416 -->\n",
       "<g id=\"node51\" class=\"node\">\n",
       "<title>2195962596416</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1459.75,-149.5 1459.75,-185.5 1620.75,-185.5 1620.75,-149.5 1459.75,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6014</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1539.5,-150 1539.5,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1580.12\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962596416&#45;&gt;2195963169280* -->\n",
       "<g id=\"edge68\" class=\"edge\">\n",
       "<title>2195962596416&#45;&gt;2195963169280*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1621.11,-167.5C1630.23,-167.5 1639.17,-167.5 1647.35,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1647.19,-171 1657.19,-167.5 1647.19,-164 1647.19,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962596416&#45;&gt;2195963167600* -->\n",
       "<g id=\"edge95\" class=\"edge\">\n",
       "<title>2195962596416&#45;&gt;2195963167600*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1599.58,-185.93C1607.49,-188.67 1615.48,-191.57 1623,-194.5 1632.91,-198.36 1643.53,-202.98 1653.12,-207.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1651.51,-210.44 1662.06,-211.45 1654.44,-204.08 1651.51,-210.44\"/>\n",
       "</g>\n",
       "<!-- 2195962596416tanh&#45;&gt;2195962596416 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>2195962596416tanh&#45;&gt;2195962596416</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1421.87,-167.5C1429.67,-167.5 1438.7,-167.5 1448.2,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1448.02,-171 1458.02,-167.5 1448.02,-164 1448.02,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962522704 -->\n",
       "<g id=\"node53\" class=\"node\">\n",
       "<title>2195962522704</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2623.5,-286.5 2623.5,-322.5 2789,-322.5 2789,-286.5 2623.5,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2665.62\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0243</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2707.75,-287 2707.75,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2748.38\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963170240* -->\n",
       "<g id=\"node74\" class=\"node\">\n",
       "<title>2195963170240*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2852\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2852\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962522704&#45;&gt;2195963170240* -->\n",
       "<g id=\"edge46\" class=\"edge\">\n",
       "<title>2195962522704&#45;&gt;2195963170240*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2765.58,-286.07C2773.49,-283.33 2781.48,-280.43 2789,-277.5 2798.91,-273.64 2809.53,-269.02 2819.12,-264.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2820.44,-267.92 2828.06,-260.55 2817.51,-261.56 2820.44,-267.92\"/>\n",
       "</g>\n",
       "<!-- 2195963167840 -->\n",
       "<g id=\"node54\" class=\"node\">\n",
       "<title>2195963167840</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2040.5,-286.5 2040.5,-322.5 2206,-322.5 2206,-286.5 2040.5,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2082.62\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.5181</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2124.75,-287 2124.75,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2165.38\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963167984+ -->\n",
       "<g id=\"node62\" class=\"node\">\n",
       "<title>2195963167984+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2269\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2269\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963167840&#45;&gt;2195963167984+ -->\n",
       "<g id=\"edge60\" class=\"edge\">\n",
       "<title>2195963167840&#45;&gt;2195963167984+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2182.58,-286.07C2190.49,-283.33 2198.48,-280.43 2206,-277.5 2215.91,-273.64 2226.53,-269.02 2236.12,-264.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2237.44,-267.92 2245.06,-260.55 2234.51,-261.56 2237.44,-267.92\"/>\n",
       "</g>\n",
       "<!-- 2195963167840+&#45;&gt;2195963167840 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>2195963167840+&#45;&gt;2195963167840</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2004.87,-304.5C2011.97,-304.5 2020.07,-304.5 2028.64,-304.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2028.59,-308 2038.59,-304.5 2028.59,-301 2028.59,-308\"/>\n",
       "</g>\n",
       "<!-- 2195963169904 -->\n",
       "<g id=\"node56\" class=\"node\">\n",
       "<title>2195963169904</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2625.75,-176.5 2625.75,-212.5 2786.75,-212.5 2786.75,-176.5 2625.75,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2665.62\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5112</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2705.5,-177 2705.5,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2746.12\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963169904&#45;&gt;2195963170480* -->\n",
       "<g id=\"edge67\" class=\"edge\">\n",
       "<title>2195963169904&#45;&gt;2195963170480*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2787.11,-194.5C2796.23,-194.5 2805.17,-194.5 2813.35,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2813.19,-198 2823.19,-194.5 2813.19,-191 2813.19,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169904tanh&#45;&gt;2195963169904 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>2195963169904tanh&#45;&gt;2195963169904</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2587.87,-194.5C2595.67,-194.5 2604.7,-194.5 2614.2,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2614.02,-198 2624.02,-194.5 2614.02,-191 2614.02,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962524768 -->\n",
       "<g id=\"node58\" class=\"node\">\n",
       "<title>2195962524768</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"3202,-258.5 3202,-294.5 3363,-294.5 3363,-258.5 3202,-258.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3241.88\" y=\"-271.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.8591</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3281.75,-259 3281.75,-294.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3322.38\" y=\"-271.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962524768&#45;&gt;2195963170864+ -->\n",
       "<g id=\"edge83\" class=\"edge\">\n",
       "<title>2195962524768&#45;&gt;2195963170864+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3363.35,-260.7C3372.09,-258.97 3380.64,-257.28 3388.46,-255.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3389.08,-259.18 3398.21,-253.8 3387.72,-252.31 3389.08,-259.18\"/>\n",
       "</g>\n",
       "<!-- 2195962596512 -->\n",
       "<g id=\"node59\" class=\"node\">\n",
       "<title>2195962596512</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"585.25,-55.5 585.25,-91.5 746.25,-91.5 746.25,-55.5 585.25,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9215</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"665,-56 665,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"705.62\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962596512&#45;&gt;2195962594592+ -->\n",
       "<g id=\"edge89\" class=\"edge\">\n",
       "<title>2195962596512&#45;&gt;2195962594592+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M731.48,-91.96C746.58,-96.27 762.1,-100.7 775.35,-104.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"774.31,-107.82 784.89,-107.19 776.23,-101.09 774.31,-107.82\"/>\n",
       "</g>\n",
       "<!-- 2195962596512*&#45;&gt;2195962596512 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>2195962596512*&#45;&gt;2195962596512</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-73.5C555.17,-73.5 564.2,-73.5 573.7,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"573.52,-77 583.52,-73.5 573.52,-70 573.52,-77\"/>\n",
       "</g>\n",
       "<!-- 2195963167984 -->\n",
       "<g id=\"node61\" class=\"node\">\n",
       "<title>2195963167984</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2332,-231.5 2332,-267.5 2497.5,-267.5 2497.5,-231.5 2332,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2374.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.4411</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2416.25,-232 2416.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2456.88\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963168224tanh -->\n",
       "<g id=\"node81\" class=\"node\">\n",
       "<title>2195963168224tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2560.5\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2560.5\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963167984&#45;&gt;2195963168224tanh -->\n",
       "<g id=\"edge51\" class=\"edge\">\n",
       "<title>2195963167984&#45;&gt;2195963168224tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2497.7,-249.5C2506.14,-249.5 2514.4,-249.5 2521.98,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2521.77,-253 2531.77,-249.5 2521.77,-246 2521.77,-253\"/>\n",
       "</g>\n",
       "<!-- 2195963167984+&#45;&gt;2195963167984 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>2195963167984+&#45;&gt;2195963167984</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2296.37,-249.5C2303.47,-249.5 2311.57,-249.5 2320.14,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2320.09,-253 2330.09,-249.5 2320.09,-246 2320.09,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962526976 -->\n",
       "<g id=\"node63\" class=\"node\">\n",
       "<title>2195962526976</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"291.5,-524.5 291.5,-560.5 457,-560.5 457,-524.5 291.5,-524.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.4100</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-525 375.75,-560.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962512720+ -->\n",
       "<g id=\"node70\" class=\"node\">\n",
       "<title>2195962512720+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"520\" cy=\"-490.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"520\" y=\"-485.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962526976&#45;&gt;2195962512720+ -->\n",
       "<g id=\"edge91\" class=\"edge\">\n",
       "<title>2195962526976&#45;&gt;2195962512720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M432.58,-524.08C440.81,-521.29 449.14,-518.38 457,-515.5 466.48,-512.03 476.67,-508.03 486,-504.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"487.12,-507.59 495.06,-500.57 484.48,-501.1 487.12,-507.59\"/>\n",
       "</g>\n",
       "<!-- 2195962526976*&#45;&gt;2195962526976 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>2195962526976*&#45;&gt;2195962526976</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-542.5C262.97,-542.5 271.07,-542.5 279.64,-542.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-546 289.59,-542.5 279.59,-539 279.59,-546\"/>\n",
       "</g>\n",
       "<!-- 2195962514688 -->\n",
       "<g id=\"node65\" class=\"node\">\n",
       "<title>2195962514688</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2040.5,-231.5 2040.5,-267.5 2206,-267.5 2206,-231.5 2040.5,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2082.62\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9230</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2124.75,-232 2124.75,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2165.38\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962514688&#45;&gt;2195963167984+ -->\n",
       "<g id=\"edge84\" class=\"edge\">\n",
       "<title>2195962514688&#45;&gt;2195963167984+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2206.2,-249.5C2214.64,-249.5 2222.9,-249.5 2230.48,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2230.27,-253 2240.27,-249.5 2230.27,-246 2230.27,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962594592 -->\n",
       "<g id=\"node66\" class=\"node\">\n",
       "<title>2195962594592</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"876.75,-96.5 876.75,-132.5 1037.75,-132.5 1037.75,-96.5 876.75,-96.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"916.62\" y=\"-109.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9056</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"956.5,-97 956.5,-132.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"997.12\" y=\"-109.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962594592&#45;&gt;2195962605632+ -->\n",
       "<g id=\"edge61\" class=\"edge\">\n",
       "<title>2195962594592&#45;&gt;2195962605632+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1016.06,-132.97C1024.14,-135.73 1032.3,-138.62 1040,-141.5 1049.59,-145.09 1059.88,-149.27 1069.27,-153.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1067.82,-156.4 1078.39,-157.1 1070.56,-149.96 1067.82,-156.4\"/>\n",
       "</g>\n",
       "<!-- 2195962594592+&#45;&gt;2195962594592 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>2195962594592+&#45;&gt;2195962594592</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M838.87,-114.5C846.67,-114.5 855.7,-114.5 865.2,-114.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"865.02,-118 875.02,-114.5 865.02,-111 865.02,-118\"/>\n",
       "</g>\n",
       "<!-- 2195962522944 -->\n",
       "<g id=\"node68\" class=\"node\">\n",
       "<title>2195962522944</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-192.5 2.25,-228.5 163.25,-228.5 163.25,-192.5 2.25,-192.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-205.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-193 82,-228.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-205.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962522944&#45;&gt;2195962512864* -->\n",
       "<g id=\"edge58\" class=\"edge\">\n",
       "<title>2195962522944&#45;&gt;2195962512864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M142.08,-228.93C149.99,-231.67 157.98,-234.57 165.5,-237.5 175.41,-241.36 186.03,-245.98 195.62,-250.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.01,-253.44 204.56,-254.45 196.94,-247.08 194.01,-253.44\"/>\n",
       "</g>\n",
       "<!-- 2195962512720 -->\n",
       "<g id=\"node69\" class=\"node\">\n",
       "<title>2195962512720</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"583,-472.5 583,-508.5 748.5,-508.5 748.5,-472.5 583,-472.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-485.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.3565</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"667.25,-473 667.25,-508.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"707.88\" y=\"-485.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962512720&#45;&gt;2195962513584+ -->\n",
       "<g id=\"edge88\" class=\"edge\">\n",
       "<title>2195962512720&#45;&gt;2195962513584+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M722.62,-472.11C731.29,-469.24 740.14,-466.3 748.5,-463.5 757.44,-460.51 767.1,-457.25 776.07,-454.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"777.18,-457.53 785.53,-451.01 774.93,-450.9 777.18,-457.53\"/>\n",
       "</g>\n",
       "<!-- 2195962512720+&#45;&gt;2195962512720 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>2195962512720+&#45;&gt;2195962512720</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M547.37,-490.5C554.47,-490.5 562.57,-490.5 571.14,-490.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"571.09,-494 581.09,-490.5 571.09,-487 571.09,-494\"/>\n",
       "</g>\n",
       "<!-- 2195962518912 -->\n",
       "<g id=\"node71\" class=\"node\">\n",
       "<title>2195962518912</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1166,-204.5 1166,-240.5 1331.5,-240.5 1331.5,-204.5 1166,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.1422</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-205 1250.25,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962518912&#45;&gt;2195963168800* -->\n",
       "<g id=\"edge53\" class=\"edge\">\n",
       "<title>2195962518912&#45;&gt;2195963168800*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1305.38,-240.88C1314.16,-243.97 1323.11,-247.24 1331.5,-250.5 1341.28,-254.3 1351.79,-258.73 1361.32,-262.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1359.64,-265.98 1370.2,-266.83 1362.47,-259.58 1359.64,-265.98\"/>\n",
       "</g>\n",
       "<!-- 2195962514880 -->\n",
       "<g id=\"node72\" class=\"node\">\n",
       "<title>2195962514880</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"291.5,-110.5 291.5,-146.5 457,-146.5 457,-110.5 291.5,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0080</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-111 375.75,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962514880&#45;&gt;2195962606256* -->\n",
       "<g id=\"edge38\" class=\"edge\">\n",
       "<title>2195962514880&#45;&gt;2195962606256*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-128.5C465.64,-128.5 473.9,-128.5 481.48,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.27,-132 491.27,-128.5 481.27,-125 481.27,-132\"/>\n",
       "</g>\n",
       "<!-- 2195963170240 -->\n",
       "<g id=\"node73\" class=\"node\">\n",
       "<title>2195963170240</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2915,-231.5 2915,-267.5 3076,-267.5 3076,-231.5 2915,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2954.88\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0239</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2994.75,-232 2994.75,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3035.38\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963170720+ -->\n",
       "<g id=\"node92\" class=\"node\">\n",
       "<title>2195963170720+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3139\" cy=\"-221.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3139\" y=\"-216.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963170240&#45;&gt;2195963170720+ -->\n",
       "<g id=\"edge39\" class=\"edge\">\n",
       "<title>2195963170240&#45;&gt;2195963170720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3076.35,-233.7C3085.09,-231.97 3093.64,-230.28 3101.46,-228.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3102.08,-232.18 3111.21,-226.8 3100.72,-225.31 3102.08,-232.18\"/>\n",
       "</g>\n",
       "<!-- 2195963170240*&#45;&gt;2195963170240 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>2195963170240*&#45;&gt;2195963170240</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2879.28,-249.5C2886.4,-249.5 2894.52,-249.5 2903.08,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2903.04,-253 2913.04,-249.5 2903.04,-246 2903.04,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962512864 -->\n",
       "<g id=\"node75\" class=\"node\">\n",
       "<title>2195962512864</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"291.5,-247.5 291.5,-283.5 457,-283.5 457,-247.5 291.5,-247.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.4452</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-248 375.75,-283.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962512864&#45;&gt;2195962520112+ -->\n",
       "<g id=\"edge40\" class=\"edge\">\n",
       "<title>2195962512864&#45;&gt;2195962520112+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M443.34,-283.97C457.19,-287.73 471.24,-291.54 483.41,-294.84\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"482.4,-298.2 492.97,-297.44 484.23,-291.44 482.4,-298.2\"/>\n",
       "</g>\n",
       "<!-- 2195962512864*&#45;&gt;2195962512864 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>2195962512864*&#45;&gt;2195962512864</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-265.5C262.97,-265.5 271.07,-265.5 279.64,-265.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-269 289.59,-265.5 279.59,-262 279.59,-269\"/>\n",
       "</g>\n",
       "<!-- 2195962513392 -->\n",
       "<g id=\"node77\" class=\"node\">\n",
       "<title>2195962513392</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"291.5,-469.5 291.5,-505.5 457,-505.5 457,-469.5 291.5,-469.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9466</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"375.75,-470 375.75,-505.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"416.38\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962513392&#45;&gt;2195962512720+ -->\n",
       "<g id=\"edge71\" class=\"edge\">\n",
       "<title>2195962513392&#45;&gt;2195962512720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M457.2,-489.21C465.64,-489.39 473.9,-489.56 481.48,-489.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"481.2,-493.21 491.27,-489.92 481.34,-486.21 481.2,-493.21\"/>\n",
       "</g>\n",
       "<!-- 2195962513392*&#45;&gt;2195962513392 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>2195962513392*&#45;&gt;2195962513392</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M255.87,-487.5C262.97,-487.5 271.07,-487.5 279.64,-487.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"279.59,-491 289.59,-487.5 279.59,-484 279.59,-491\"/>\n",
       "</g>\n",
       "<!-- 2195962521072 -->\n",
       "<g id=\"node79\" class=\"node\">\n",
       "<title>2195962521072</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-414.5 2.25,-450.5 163.25,-450.5 163.25,-414.5 2.25,-414.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-427.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-415 82,-450.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-427.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962521072&#45;&gt;2195962513392* -->\n",
       "<g id=\"edge80\" class=\"edge\">\n",
       "<title>2195962521072&#45;&gt;2195962513392*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M139.38,-450.88C148.16,-453.97 157.11,-457.24 165.5,-460.5 175.28,-464.3 185.79,-468.73 195.32,-472.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"193.64,-475.98 204.2,-476.83 196.47,-469.58 193.64,-475.98\"/>\n",
       "</g>\n",
       "<!-- 2195963168224 -->\n",
       "<g id=\"node80\" class=\"node\">\n",
       "<title>2195963168224</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2623.5,-231.5 2623.5,-267.5 2789,-267.5 2789,-231.5 2623.5,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2665.62\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9850</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2707.75,-232 2707.75,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2748.38\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963168224&#45;&gt;2195963170240* -->\n",
       "<g id=\"edge45\" class=\"edge\">\n",
       "<title>2195963168224&#45;&gt;2195963170240*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2789.2,-249.5C2797.64,-249.5 2805.9,-249.5 2813.48,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2813.27,-253 2823.27,-249.5 2813.27,-246 2813.27,-253\"/>\n",
       "</g>\n",
       "<!-- 2195963168224tanh&#45;&gt;2195963168224 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>2195963168224tanh&#45;&gt;2195963168224</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2587.87,-249.5C2594.97,-249.5 2603.07,-249.5 2611.64,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2611.59,-253 2621.59,-249.5 2611.59,-246 2611.59,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962519056 -->\n",
       "<g id=\"node82\" class=\"node\">\n",
       "<title>2195962519056</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1168.25,-314.5 1168.25,-350.5 1329.25,-350.5 1329.25,-314.5 1168.25,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9452</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1248,-315 1248,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1288.62\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962519056&#45;&gt;2195963167120* -->\n",
       "<g id=\"edge77\" class=\"edge\">\n",
       "<title>2195962519056&#45;&gt;2195963167120*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1329.61,-332.5C1338.73,-332.5 1347.67,-332.5 1355.85,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1355.69,-336 1365.69,-332.5 1355.69,-329 1355.69,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962527312 -->\n",
       "<g id=\"node83\" class=\"node\">\n",
       "<title>2195962527312</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-302.5 2.25,-338.5 163.25,-338.5 163.25,-302.5 2.25,-302.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2887</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-303 82,-338.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"122.62\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962527312&#45;&gt;2195962513776* -->\n",
       "<g id=\"edge76\" class=\"edge\">\n",
       "<title>2195962527312&#45;&gt;2195962513776*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M163.61,-320.5C172.73,-320.5 181.67,-320.5 189.85,-320.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.69,-324 199.69,-320.5 189.69,-317 189.69,-324\"/>\n",
       "</g>\n",
       "<!-- 2195962519152 -->\n",
       "<g id=\"node84\" class=\"node\">\n",
       "<title>2195962519152</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-524.5 0,-560.5 165.5,-560.5 165.5,-524.5 0,-524.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4700</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-525 84.25,-560.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962519152&#45;&gt;2195962526976* -->\n",
       "<g id=\"edge93\" class=\"edge\">\n",
       "<title>2195962519152&#45;&gt;2195962526976*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.7,-542.5C174.14,-542.5 182.4,-542.5 189.98,-542.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"189.77,-546 199.77,-542.5 189.77,-539 189.77,-546\"/>\n",
       "</g>\n",
       "<!-- 2195963170480 -->\n",
       "<g id=\"node85\" class=\"node\">\n",
       "<title>2195963170480</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2915,-176.5 2915,-212.5 3076,-212.5 3076,-176.5 2915,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2954.88\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0798</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2994.75,-177 2994.75,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3035.38\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963170480&#45;&gt;2195963170720+ -->\n",
       "<g id=\"edge57\" class=\"edge\">\n",
       "<title>2195963170480&#45;&gt;2195963170720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3076.35,-209.74C3085.09,-211.4 3093.64,-213.04 3101.46,-214.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3100.73,-217.95 3111.21,-216.39 3102.04,-211.08 3100.73,-217.95\"/>\n",
       "</g>\n",
       "<!-- 2195963170480*&#45;&gt;2195963170480 -->\n",
       "<g id=\"edge31\" class=\"edge\">\n",
       "<title>2195963170480*&#45;&gt;2195963170480</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2879.28,-194.5C2886.4,-194.5 2894.52,-194.5 2903.08,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2903.04,-198 2913.04,-194.5 2903.04,-191 2903.04,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962521264 -->\n",
       "<g id=\"node87\" class=\"node\">\n",
       "<title>2195962521264</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"585.25,-417.5 585.25,-453.5 746.25,-453.5 746.25,-417.5 585.25,-417.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"625.12\" y=\"-430.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6977</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"665,-418 665,-453.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"705.62\" y=\"-430.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962521264&#45;&gt;2195962513584+ -->\n",
       "<g id=\"edge54\" class=\"edge\">\n",
       "<title>2195962521264&#45;&gt;2195962513584+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M746.61,-439.39C755.73,-439.83 764.67,-440.27 772.85,-440.67\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"772.53,-444.16 782.69,-441.15 772.87,-437.16 772.53,-444.16\"/>\n",
       "</g>\n",
       "<!-- 2195962597136 -->\n",
       "<g id=\"node88\" class=\"node\">\n",
       "<title>2195962597136</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"293.75,-0.5 293.75,-36.5 454.75,-36.5 454.75,-0.5 293.75,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"333.62\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"373.5,-1 373.5,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"414.12\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962597136&#45;&gt;2195962596512* -->\n",
       "<g id=\"edge92\" class=\"edge\">\n",
       "<title>2195962597136&#45;&gt;2195962596512*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M433.58,-36.93C441.49,-39.67 449.48,-42.57 457,-45.5 466.91,-49.36 477.53,-53.98 487.12,-58.33\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"485.51,-61.44 496.06,-62.45 488.44,-55.08 485.51,-61.44\"/>\n",
       "</g>\n",
       "<!-- 2195963168560 -->\n",
       "<g id=\"node89\" class=\"node\">\n",
       "<title>2195963168560</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1459.75,-369.5 1459.75,-405.5 1620.75,-405.5 1620.75,-369.5 1459.75,-369.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1499.62\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2817</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1539.5,-370 1539.5,-405.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1580.12\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963168560&#45;&gt;2195963169040+ -->\n",
       "<g id=\"edge49\" class=\"edge\">\n",
       "<title>2195963168560&#45;&gt;2195963169040+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1609.56,-369C1614.31,-366.51 1618.85,-363.69 1623,-360.5 1646.17,-342.7 1641,-328.51 1659,-305.5 1660.18,-303.99 1661.43,-302.47 1662.71,-300.95\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1665.19,-303.43 1669.21,-293.62 1659.95,-298.78 1665.19,-303.43\"/>\n",
       "</g>\n",
       "<!-- 2195963168560*&#45;&gt;2195963168560 -->\n",
       "<g id=\"edge32\" class=\"edge\">\n",
       "<title>2195963168560*&#45;&gt;2195963168560</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1421.87,-387.5C1429.67,-387.5 1438.7,-387.5 1448.2,-387.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1448.02,-391 1458.02,-387.5 1448.02,-384 1448.02,-391\"/>\n",
       "</g>\n",
       "<!-- 2195963170720 -->\n",
       "<g id=\"node91\" class=\"node\">\n",
       "<title>2195963170720</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"3202,-203.5 3202,-239.5 3363,-239.5 3363,-203.5 3202,-203.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3241.88\" y=\"-216.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1037</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3281.75,-204 3281.75,-239.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3322.38\" y=\"-216.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195963170720&#45;&gt;2195963170864+ -->\n",
       "<g id=\"edge72\" class=\"edge\">\n",
       "<title>2195963170720&#45;&gt;2195963170864+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3363.35,-236.74C3372.09,-238.4 3380.64,-240.04 3388.46,-241.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3387.73,-244.95 3398.21,-243.39 3389.04,-238.08 3387.73,-244.95\"/>\n",
       "</g>\n",
       "<!-- 2195963170720+&#45;&gt;2195963170720 -->\n",
       "<g id=\"edge33\" class=\"edge\">\n",
       "<title>2195963170720+&#45;&gt;2195963170720</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3166.28,-221.5C3173.4,-221.5 3181.52,-221.5 3190.08,-221.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3190.04,-225 3200.04,-221.5 3190.04,-218 3190.04,-225\"/>\n",
       "</g>\n",
       "<!-- 2195962607600 -->\n",
       "<g id=\"node93\" class=\"node\">\n",
       "<title>2195962607600</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1166,-259.5 1166,-295.5 1331.5,-295.5 1331.5,-259.5 1166,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1208.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9877</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1250.25,-260 1250.25,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1290.88\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
       "</g>\n",
       "<!-- 2195962607600&#45;&gt;2195963168800* -->\n",
       "<g id=\"edge85\" class=\"edge\">\n",
       "<title>2195962607600&#45;&gt;2195963168800*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1331.7,-277.5C1340.14,-277.5 1348.4,-277.5 1355.98,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1355.77,-281 1365.77,-277.5 1355.77,-274 1355.77,-281\"/>\n",
       "</g>\n",
       "<!-- 2195962607600&#45;&gt;2195963167120* -->\n",
       "<g id=\"edge50\" class=\"edge\">\n",
       "<title>2195962607600&#45;&gt;2195963167120*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1305.38,-295.88C1314.16,-298.97 1323.11,-302.24 1331.5,-305.5 1341.28,-309.3 1351.79,-313.73 1361.32,-317.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1359.64,-320.98 1370.2,-321.83 1362.47,-314.58 1359.64,-320.98\"/>\n",
       "</g>\n",
       "<!-- 2195962607600tanh&#45;&gt;2195962607600 -->\n",
       "<g id=\"edge34\" class=\"edge\">\n",
       "<title>2195962607600tanh&#45;&gt;2195962607600</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1130.37,-277.5C1137.47,-277.5 1145.57,-277.5 1154.14,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1154.09,-281 1164.09,-277.5 1154.09,-274 1154.09,-281\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff4990fbb0>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "draw_dots(Ms[0]) # 取 0 是因为 Ms 是个列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3921dede-ce2f-4e82-9347-ae96f1c28460",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"3990pt\" height=\"624pt\"\n",
       " viewBox=\"0.00 0.00 3990.00 624.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 620)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-620 3986,-620 3986,4 -4,4\"/>\n",
       "<!-- 2195963168800 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>2195963168800</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1484.5,-259.5 1484.5,-295.5 1645.5,-295.5 1645.5,-259.5 1484.5,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1524.38\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1405</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-260 1564.25,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1604.88\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963169040+ -->\n",
       "<g id=\"node14\" class=\"node\">\n",
       "<title>2195963169040+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1713\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1713\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963168800&#45;&gt;2195963169040+ -->\n",
       "<g id=\"edge64\" class=\"edge\">\n",
       "<title>2195963168800&#45;&gt;2195963169040+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1645.83,-277.5C1655.72,-277.5 1665.44,-277.5 1674.25,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1674.13,-281 1684.13,-277.5 1674.13,-274 1674.13,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963168800* -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>2195963168800*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1417\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1417\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963168800*&#45;&gt;2195963168800 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>2195963168800*&#45;&gt;2195963168800</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1444.44,-277.5C1452.83,-277.5 1462.62,-277.5 1472.93,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1472.76,-281 1482.76,-277.5 1472.76,-274 1472.76,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963170864 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>2195963170864</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"3534,-230.5 3534,-266.5 3695,-266.5 3695,-230.5 3534,-230.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3573.88\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9628</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3613.75,-231 3613.75,-266.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3654.38\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.4442</text>\n",
       "</g>\n",
       "<!-- 2195963171104tanh -->\n",
       "<g id=\"node16\" class=\"node\">\n",
       "<title>2195963171104tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3758\" cy=\"-248.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3758\" y=\"-243.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963170864&#45;&gt;2195963171104tanh -->\n",
       "<g id=\"edge66\" class=\"edge\">\n",
       "<title>2195963170864&#45;&gt;2195963171104tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3695.35,-248.5C3703.74,-248.5 3711.96,-248.5 3719.52,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3719.28,-252 3729.28,-248.5 3719.28,-245 3719.28,-252\"/>\n",
       "</g>\n",
       "<!-- 2195963170864+ -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>2195963170864+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3471\" cy=\"-248.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3471\" y=\"-243.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963170864+&#45;&gt;2195963170864 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>2195963170864+&#45;&gt;2195963170864</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3498.28,-248.5C3505.4,-248.5 3513.52,-248.5 3522.08,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3522.04,-252 3532.04,-248.5 3522.04,-245 3522.04,-252\"/>\n",
       "</g>\n",
       "<!-- 2195962605632 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>2195962605632</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1188.5,-149.5 1188.5,-185.5 1349.5,-185.5 1349.5,-149.5 1188.5,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1228.38\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6954</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-150 1268.25,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1308.88\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0307</text>\n",
       "</g>\n",
       "<!-- 2195962596416tanh -->\n",
       "<g id=\"node52\" class=\"node\">\n",
       "<title>2195962596416tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1417\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1417\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962605632&#45;&gt;2195962596416tanh -->\n",
       "<g id=\"edge69\" class=\"edge\">\n",
       "<title>2195962605632&#45;&gt;2195962596416tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1349.83,-167.5C1359.72,-167.5 1369.44,-167.5 1378.25,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1378.13,-171 1388.13,-167.5 1378.13,-164 1378.13,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962605632+ -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>2195962605632+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1121\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1121\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962605632+&#45;&gt;2195962605632 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>2195962605632+&#45;&gt;2195962605632</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1148.44,-167.5C1156.83,-167.5 1166.62,-167.5 1176.93,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1176.76,-171 1186.76,-167.5 1176.76,-164 1176.76,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962511472 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>2195962511472</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"888,-259.5 888,-295.5 1058,-295.5 1058,-259.5 888,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"930.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.5444</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"972.25,-260 972.25,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1015.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962607600tanh -->\n",
       "<g id=\"node94\" class=\"node\">\n",
       "<title>2195962607600tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1121\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1121\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962511472&#45;&gt;2195962607600tanh -->\n",
       "<g id=\"edge55\" class=\"edge\">\n",
       "<title>2195962511472&#45;&gt;2195962607600tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1058.08,-277.5C1066.57,-277.5 1074.85,-277.5 1082.45,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1082.26,-281 1092.26,-277.5 1082.26,-274 1082.26,-281\"/>\n",
       "</g>\n",
       "<!-- 2195962511472+ -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>2195962511472+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"825\" cy=\"-277.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"825\" y=\"-272.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962511472+&#45;&gt;2195962511472 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>2195962511472+&#45;&gt;2195962511472</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M852.44,-277.5C859.52,-277.5 867.61,-277.5 876.17,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"876.12,-281 886.12,-277.5 876.12,-274 876.12,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963166880 -->\n",
       "<g id=\"node9\" class=\"node\">\n",
       "<title>2195963166880</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1480,-424.5 1480,-460.5 1650,-460.5 1650,-424.5 1480,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1522.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.2188</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-425 1564.25,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1607.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963167360+ -->\n",
       "<g id=\"node33\" class=\"node\">\n",
       "<title>2195963167360+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1713\" cy=\"-332.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1713\" y=\"-327.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963166880&#45;&gt;2195963167360+ -->\n",
       "<g id=\"edge63\" class=\"edge\">\n",
       "<title>2195963166880&#45;&gt;2195963167360+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1635.54,-424.05C1640.63,-421.54 1645.51,-418.7 1650,-415.5 1670.41,-400.93 1686.97,-377.61 1697.83,-359.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1700.74,-361.36 1702.66,-350.94 1694.66,-357.89 1700.74,-361.36\"/>\n",
       "</g>\n",
       "<!-- 2195963166880* -->\n",
       "<g id=\"node10\" class=\"node\">\n",
       "<title>2195963166880*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1417\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1417\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963166880*&#45;&gt;2195963166880 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>2195963166880*&#45;&gt;2195963166880</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1444.44,-442.5C1451.52,-442.5 1459.61,-442.5 1468.17,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1468.12,-446 1478.12,-442.5 1468.12,-439 1468.12,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962513584 -->\n",
       "<g id=\"node11\" class=\"node\">\n",
       "<title>2195962513584</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"888,-424.5 888,-460.5 1058,-460.5 1058,-424.5 888,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"930.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.6588</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"972.25,-425 972.25,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1015.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0021</text>\n",
       "</g>\n",
       "<!-- 2195962526112tanh -->\n",
       "<g id=\"node23\" class=\"node\">\n",
       "<title>2195962526112tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1121\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1121\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195962513584&#45;&gt;2195962526112tanh -->\n",
       "<g id=\"edge79\" class=\"edge\">\n",
       "<title>2195962513584&#45;&gt;2195962526112tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1058.08,-442.5C1066.57,-442.5 1074.85,-442.5 1082.45,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1082.26,-446 1092.26,-442.5 1082.26,-439 1082.26,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962513584+ -->\n",
       "<g id=\"node12\" class=\"node\">\n",
       "<title>2195962513584+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"825\" cy=\"-442.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"825\" y=\"-437.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962513584+&#45;&gt;2195962513584 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>2195962513584+&#45;&gt;2195962513584</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M852.44,-442.5C859.52,-442.5 867.61,-442.5 876.17,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"876.12,-446 886.12,-442.5 876.12,-439 876.12,-446\"/>\n",
       "</g>\n",
       "<!-- 2195963169040 -->\n",
       "<g id=\"node13\" class=\"node\">\n",
       "<title>2195963169040</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1780.5,-259.5 1780.5,-295.5 1941.5,-295.5 1941.5,-259.5 1780.5,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1820.38\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.4222</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1860.25,-260 1860.25,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1900.88\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963169520+ -->\n",
       "<g id=\"node38\" class=\"node\">\n",
       "<title>2195963169520+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2009\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2009\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963169040&#45;&gt;2195963169520+ -->\n",
       "<g id=\"edge78\" class=\"edge\">\n",
       "<title>2195963169040&#45;&gt;2195963169520+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1928.27,-259.18C1934.42,-256.6 1940.43,-253.71 1946,-250.5 1960.92,-241.9 1975.34,-229.23 1986.51,-218.12\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1988.87,-220.72 1993.32,-211.1 1983.84,-215.84 1988.87,-220.72\"/>\n",
       "</g>\n",
       "<!-- 2195963169040+&#45;&gt;2195963169040 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>2195963169040+&#45;&gt;2195963169040</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1740.44,-277.5C1748.83,-277.5 1758.62,-277.5 1768.93,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1768.76,-281 1778.76,-277.5 1768.76,-274 1768.76,-281\"/>\n",
       "</g>\n",
       "<!-- 2195963171104 -->\n",
       "<g id=\"node15\" class=\"node\">\n",
       "<title>2195963171104</title>\n",
       "<polygon fill=\"lightyellow\" stroke=\"black\" points=\"3821,-230.5 3821,-266.5 3982,-266.5 3982,-230.5 3821,-230.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3860.88\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.7455</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3900.75,-231 3900.75,-266.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3941.38\" y=\"-243.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 1.0000</text>\n",
       "</g>\n",
       "<!-- 2195963171104tanh&#45;&gt;2195963171104 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>2195963171104tanh&#45;&gt;2195963171104</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3785.28,-248.5C3792.4,-248.5 3800.52,-248.5 3809.08,-248.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3809.04,-252 3819.04,-248.5 3809.04,-245 3809.04,-252\"/>\n",
       "</g>\n",
       "<!-- 2195962519872 -->\n",
       "<g id=\"node17\" class=\"node\">\n",
       "<title>2195962519872</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1188.5,-479.5 1188.5,-515.5 1349.5,-515.5 1349.5,-479.5 1188.5,-479.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1228.38\" y=\"-492.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2353</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-480 1268.25,-515.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1308.88\" y=\"-492.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0003</text>\n",
       "</g>\n",
       "<!-- 2195962519872&#45;&gt;2195963166880* -->\n",
       "<g id=\"edge62\" class=\"edge\">\n",
       "<title>2195962519872&#45;&gt;2195963166880*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1329.95,-479.15C1338.08,-476.39 1346.28,-473.47 1354,-470.5 1363.93,-466.68 1374.55,-462.08 1384.14,-457.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1385.46,-460.96 1393.07,-453.59 1382.53,-454.61 1385.46,-460.96\"/>\n",
       "</g>\n",
       "<!-- 2195962513776 -->\n",
       "<g id=\"node18\" class=\"node\">\n",
       "<title>2195962513776</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"298.25,-302.5 298.25,-338.5 463.75,-338.5 463.75,-302.5 298.25,-302.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"338.12\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5773</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"378,-303 378,-338.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"420.88\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962520112+ -->\n",
       "<g id=\"node29\" class=\"node\">\n",
       "<title>2195962520112+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"529\" cy=\"-304.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"529\" y=\"-299.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962513776&#45;&gt;2195962520112+ -->\n",
       "<g id=\"edge41\" class=\"edge\">\n",
       "<title>2195962513776&#45;&gt;2195962520112+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M463.96,-311.52C473.33,-310.49 482.49,-309.49 490.83,-308.57\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"490.94,-312.08 500.5,-307.51 490.17,-305.12 490.94,-312.08\"/>\n",
       "</g>\n",
       "<!-- 2195962513776* -->\n",
       "<g id=\"node19\" class=\"node\">\n",
       "<title>2195962513776*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"233\" cy=\"-320.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"233\" y=\"-315.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962513776*&#45;&gt;2195962513776 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>2195962513776*&#45;&gt;2195962513776</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M260.44,-320.5C268.18,-320.5 277.11,-320.5 286.54,-320.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"286.28,-324 296.28,-320.5 286.28,-317 286.28,-324\"/>\n",
       "</g>\n",
       "<!-- 2195963167120 -->\n",
       "<g id=\"node20\" class=\"node\">\n",
       "<title>2195963167120</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1480,-314.5 1480,-350.5 1650,-350.5 1650,-314.5 1480,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1522.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9336</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-315 1564.25,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1607.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963167120&#45;&gt;2195963167360+ -->\n",
       "<g id=\"edge75\" class=\"edge\">\n",
       "<title>2195963167120&#45;&gt;2195963167360+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1650.08,-332.5C1658.57,-332.5 1666.85,-332.5 1674.45,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1674.26,-336 1684.26,-332.5 1674.26,-329 1674.26,-336\"/>\n",
       "</g>\n",
       "<!-- 2195963167120* -->\n",
       "<g id=\"node21\" class=\"node\">\n",
       "<title>2195963167120*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1417\" cy=\"-332.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1417\" y=\"-327.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963167120*&#45;&gt;2195963167120 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>2195963167120*&#45;&gt;2195963167120</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1444.44,-332.5C1451.52,-332.5 1459.61,-332.5 1468.17,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1468.12,-336 1478.12,-332.5 1468.12,-329 1468.12,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962526112 -->\n",
       "<g id=\"node22\" class=\"node\">\n",
       "<title>2195962526112</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1184,-424.5 1184,-460.5 1354,-460.5 1354,-424.5 1184,-424.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1226.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9301</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-425 1268.25,-460.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1311.12\" y=\"-437.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0156</text>\n",
       "</g>\n",
       "<!-- 2195962526112&#45;&gt;2195963166880* -->\n",
       "<g id=\"edge42\" class=\"edge\">\n",
       "<title>2195962526112&#45;&gt;2195963166880*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1354.08,-442.5C1362.57,-442.5 1370.85,-442.5 1378.45,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1378.26,-446 1388.26,-442.5 1378.26,-439 1378.26,-446\"/>\n",
       "</g>\n",
       "<!-- 2195963168560* -->\n",
       "<g id=\"node90\" class=\"node\">\n",
       "<title>2195963168560*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1417\" cy=\"-387.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1417\" y=\"-382.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962526112&#45;&gt;2195963168560* -->\n",
       "<g id=\"edge82\" class=\"edge\">\n",
       "<title>2195962526112&#45;&gt;2195963168560*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1329.95,-424.15C1338.08,-421.39 1346.28,-418.47 1354,-415.5 1363.93,-411.68 1374.55,-407.08 1384.14,-402.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1385.46,-405.96 1393.07,-398.59 1382.53,-399.61 1385.46,-405.96\"/>\n",
       "</g>\n",
       "<!-- 2195962526112tanh&#45;&gt;2195962526112 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>2195962526112tanh&#45;&gt;2195962526112</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1148.44,-442.5C1155.52,-442.5 1163.61,-442.5 1172.17,-442.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1172.12,-446 1182.12,-442.5 1172.12,-439 1172.12,-446\"/>\n",
       "</g>\n",
       "<!-- 2195962515888 -->\n",
       "<g id=\"node24\" class=\"node\">\n",
       "<title>2195962515888</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1184,-369.5 1184,-405.5 1354,-405.5 1354,-369.5 1184,-369.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1226.12\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.3029</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-370 1268.25,-405.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1311.12\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0476</text>\n",
       "</g>\n",
       "<!-- 2195962515888&#45;&gt;2195963168560* -->\n",
       "<g id=\"edge43\" class=\"edge\">\n",
       "<title>2195962515888&#45;&gt;2195963168560*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1354.08,-387.5C1362.57,-387.5 1370.85,-387.5 1378.45,-387.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1378.26,-391 1388.26,-387.5 1378.26,-384 1378.26,-391\"/>\n",
       "</g>\n",
       "<!-- 2195963169280 -->\n",
       "<g id=\"node25\" class=\"node\">\n",
       "<title>2195963169280</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1780.5,-149.5 1780.5,-185.5 1941.5,-185.5 1941.5,-149.5 1780.5,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1820.38\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5621</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1860.25,-150 1860.25,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1900.88\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963169280&#45;&gt;2195963169520+ -->\n",
       "<g id=\"edge37\" class=\"edge\">\n",
       "<title>2195963169280&#45;&gt;2195963169520+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1941.83,-182.26C1952.11,-184.16 1962.2,-186.03 1971.29,-187.71\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1970.63,-191.15 1981.1,-189.53 1971.9,-184.27 1970.63,-191.15\"/>\n",
       "</g>\n",
       "<!-- 2195963169280* -->\n",
       "<g id=\"node26\" class=\"node\">\n",
       "<title>2195963169280*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1713\" cy=\"-167.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1713\" y=\"-162.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963169280*&#45;&gt;2195963169280 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>2195963169280*&#45;&gt;2195963169280</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1740.44,-167.5C1748.83,-167.5 1758.62,-167.5 1768.93,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1768.76,-171 1778.76,-167.5 1768.76,-164 1768.76,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962520064 -->\n",
       "<g id=\"node27\" class=\"node\">\n",
       "<title>2195962520064</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1484.5,-94.5 1484.5,-130.5 1645.5,-130.5 1645.5,-94.5 1484.5,-94.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1524.38\" y=\"-107.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9346</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-95 1564.25,-130.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1604.88\" y=\"-107.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0308</text>\n",
       "</g>\n",
       "<!-- 2195962520064&#45;&gt;2195963169280* -->\n",
       "<g id=\"edge81\" class=\"edge\">\n",
       "<title>2195962520064&#45;&gt;2195963169280*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1625.95,-130.85C1634.08,-133.61 1642.28,-136.53 1650,-139.5 1659.93,-143.32 1670.55,-147.92 1680.14,-152.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1678.53,-155.39 1689.07,-156.41 1681.46,-149.04 1678.53,-155.39\"/>\n",
       "</g>\n",
       "<!-- 2195962520112 -->\n",
       "<g id=\"node28\" class=\"node\">\n",
       "<title>2195962520112</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"592,-286.5 592,-322.5 762,-322.5 762,-286.5 592,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"634.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.8679</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"676.25,-287 676.25,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"719.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962520112&#45;&gt;2195962511472+ -->\n",
       "<g id=\"edge44\" class=\"edge\">\n",
       "<title>2195962520112&#45;&gt;2195962511472+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M762.08,-288.95C770.92,-287.32 779.54,-285.72 787.4,-284.27\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"788,-287.72 797.19,-282.46 786.72,-280.83 788,-287.72\"/>\n",
       "</g>\n",
       "<!-- 2195962520112+&#45;&gt;2195962520112 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>2195962520112+&#45;&gt;2195962520112</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M556.44,-304.5C563.52,-304.5 571.61,-304.5 580.17,-304.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"580.12,-308 590.12,-304.5 580.12,-301 580.12,-308\"/>\n",
       "</g>\n",
       "<!-- 2195962516032 -->\n",
       "<g id=\"node30\" class=\"node\">\n",
       "<title>2195962516032</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-357.5 2.25,-393.5 167.75,-393.5 167.75,-357.5 2.25,-357.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-370.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-358 82,-393.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-370.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0001</text>\n",
       "</g>\n",
       "<!-- 2195962516032&#45;&gt;2195962513776* -->\n",
       "<g id=\"edge90\" class=\"edge\">\n",
       "<title>2195962516032&#45;&gt;2195962513776*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M145.95,-357.15C154.08,-354.39 162.28,-351.47 170,-348.5 179.93,-344.68 190.55,-340.08 200.14,-335.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"201.46,-338.96 209.07,-331.59 198.53,-332.61 201.46,-338.96\"/>\n",
       "</g>\n",
       "<!-- 2195962511952 -->\n",
       "<g id=\"node31\" class=\"node\">\n",
       "<title>2195962511952</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"4.5,-579.5 4.5,-615.5 165.5,-615.5 165.5,-579.5 4.5,-579.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"44.38\" y=\"-592.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-580 84.25,-615.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-592.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0010</text>\n",
       "</g>\n",
       "<!-- 2195962526976* -->\n",
       "<g id=\"node64\" class=\"node\">\n",
       "<title>2195962526976*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"233\" cy=\"-542.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"233\" y=\"-537.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962511952&#45;&gt;2195962526976* -->\n",
       "<g id=\"edge56\" class=\"edge\">\n",
       "<title>2195962511952&#45;&gt;2195962526976*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M145.95,-579.15C154.08,-576.39 162.28,-573.47 170,-570.5 179.93,-566.68 190.55,-562.08 200.14,-557.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"201.46,-560.96 209.07,-553.59 198.53,-554.61 201.46,-560.96\"/>\n",
       "</g>\n",
       "<!-- 2195963167360 -->\n",
       "<g id=\"node32\" class=\"node\">\n",
       "<title>2195963167360</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1776,-314.5 1776,-350.5 1946,-350.5 1946,-314.5 1776,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1818.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.1525</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1860.25,-315 1860.25,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1903.12\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963167840+ -->\n",
       "<g id=\"node55\" class=\"node\">\n",
       "<title>2195963167840+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2009\" cy=\"-304.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2009\" y=\"-299.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963167360&#45;&gt;2195963167840+ -->\n",
       "<g id=\"edge87\" class=\"edge\">\n",
       "<title>2195963167360&#45;&gt;2195963167840+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1946.08,-316.37C1954.92,-314.68 1963.54,-313.03 1971.4,-311.52\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1972.03,-314.96 1981.19,-309.64 1970.71,-308.09 1972.03,-314.96\"/>\n",
       "</g>\n",
       "<!-- 2195963167360+&#45;&gt;2195963167360 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>2195963167360+&#45;&gt;2195963167360</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1740.44,-332.5C1747.52,-332.5 1755.61,-332.5 1764.17,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1764.12,-336 1774.12,-332.5 1764.12,-329 1764.12,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962606256 -->\n",
       "<g id=\"node34\" class=\"node\">\n",
       "<title>2195962606256</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"594.25,-110.5 594.25,-146.5 759.75,-146.5 759.75,-110.5 594.25,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"636.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0159</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"678.5,-111 678.5,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"719.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0307</text>\n",
       "</g>\n",
       "<!-- 2195962594592+ -->\n",
       "<g id=\"node67\" class=\"node\">\n",
       "<title>2195962594592+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"825\" cy=\"-114.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"825\" y=\"-109.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962606256&#45;&gt;2195962594592+ -->\n",
       "<g id=\"edge52\" class=\"edge\">\n",
       "<title>2195962606256&#45;&gt;2195962594592+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M759.96,-120.64C769.22,-119.75 778.28,-118.88 786.54,-118.09\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"786.87,-121.58 796.49,-117.14 786.21,-114.61 786.87,-121.58\"/>\n",
       "</g>\n",
       "<!-- 2195962606256* -->\n",
       "<g id=\"node35\" class=\"node\">\n",
       "<title>2195962606256*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"529\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"529\" y=\"-123.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962606256*&#45;&gt;2195962606256 -->\n",
       "<g id=\"edge15\" class=\"edge\">\n",
       "<title>2195962606256*&#45;&gt;2195962606256</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M556.44,-128.5C564.18,-128.5 573.11,-128.5 582.54,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"582.28,-132 592.28,-128.5 582.28,-125 582.28,-132\"/>\n",
       "</g>\n",
       "<!-- 2195962516176 -->\n",
       "<g id=\"node36\" class=\"node\">\n",
       "<title>2195962516176</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-247.5 0,-283.5 170,-283.5 170,-247.5 0,-247.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.8151</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-248 84.25,-283.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"127.12\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0006</text>\n",
       "</g>\n",
       "<!-- 2195962512864* -->\n",
       "<g id=\"node76\" class=\"node\">\n",
       "<title>2195962512864*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"233\" cy=\"-265.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"233\" y=\"-260.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962516176&#45;&gt;2195962512864* -->\n",
       "<g id=\"edge70\" class=\"edge\">\n",
       "<title>2195962516176&#45;&gt;2195962512864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M170.08,-265.5C178.57,-265.5 186.85,-265.5 194.45,-265.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.26,-269 204.26,-265.5 194.26,-262 194.26,-269\"/>\n",
       "</g>\n",
       "<!-- 2195963169520 -->\n",
       "<g id=\"node37\" class=\"node\">\n",
       "<title>2195963169520</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2076.5,-176.5 2076.5,-212.5 2237.5,-212.5 2237.5,-176.5 2076.5,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2116.38\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9843</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2156.25,-177 2156.25,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2196.88\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963169664+ -->\n",
       "<g id=\"node44\" class=\"node\">\n",
       "<title>2195963169664+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2305\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2305\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963169520&#45;&gt;2195963169664+ -->\n",
       "<g id=\"edge47\" class=\"edge\">\n",
       "<title>2195963169520&#45;&gt;2195963169664+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2237.83,-194.5C2247.72,-194.5 2257.44,-194.5 2266.25,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2266.13,-198 2276.13,-194.5 2266.13,-191 2266.13,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169520+&#45;&gt;2195963169520 -->\n",
       "<g id=\"edge16\" class=\"edge\">\n",
       "<title>2195963169520+&#45;&gt;2195963169520</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2036.44,-194.5C2044.83,-194.5 2054.62,-194.5 2064.93,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2064.76,-198 2074.76,-194.5 2064.76,-191 2064.76,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962594064 -->\n",
       "<g id=\"node39\" class=\"node\">\n",
       "<title>2195962594064</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"298.25,-165.5 298.25,-201.5 463.75,-201.5 463.75,-165.5 298.25,-165.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"338.12\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"378,-166 378,-201.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"420.88\" y=\"-178.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962594064&#45;&gt;2195962606256* -->\n",
       "<g id=\"edge73\" class=\"edge\">\n",
       "<title>2195962594064&#45;&gt;2195962606256*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M439.63,-165.05C448.51,-161.99 457.53,-158.75 466,-155.5 475.8,-151.74 486.31,-147.32 495.84,-143.15\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"496.99,-146.47 504.72,-139.22 494.16,-140.07 496.99,-146.47\"/>\n",
       "</g>\n",
       "<!-- 2195962520400 -->\n",
       "<g id=\"node40\" class=\"node\">\n",
       "<title>2195962520400</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2074.25,-121.5 2074.25,-157.5 2239.75,-157.5 2239.75,-121.5 2074.25,-121.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2116.38\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4200</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2158.5,-122 2158.5,-157.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2199.12\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195962520400&#45;&gt;2195963169664+ -->\n",
       "<g id=\"edge59\" class=\"edge\">\n",
       "<title>2195962520400&#45;&gt;2195963169664+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2217.95,-157.85C2226.08,-160.61 2234.28,-163.53 2242,-166.5 2251.93,-170.32 2262.55,-174.92 2272.14,-179.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2270.53,-182.39 2281.07,-183.41 2273.46,-176.04 2270.53,-182.39\"/>\n",
       "</g>\n",
       "<!-- 2195963167600 -->\n",
       "<g id=\"node41\" class=\"node\">\n",
       "<title>2195963167600</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1776,-204.5 1776,-240.5 1946,-240.5 1946,-204.5 1776,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1818.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.3656</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1860.25,-205 1860.25,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1903.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963167600&#45;&gt;2195963167840+ -->\n",
       "<g id=\"edge36\" class=\"edge\">\n",
       "<title>2195963167600&#45;&gt;2195963167840+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1926,-240.85C1932.93,-243.7 1939.73,-246.92 1946,-250.5 1960.62,-258.85 1974.92,-270.97 1986.11,-281.61\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1983.34,-283.8 1992.92,-288.31 1988.24,-278.8 1983.34,-283.8\"/>\n",
       "</g>\n",
       "<!-- 2195963167600* -->\n",
       "<g id=\"node42\" class=\"node\">\n",
       "<title>2195963167600*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"1713\" cy=\"-222.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1713\" y=\"-217.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195963167600*&#45;&gt;2195963167600 -->\n",
       "<g id=\"edge17\" class=\"edge\">\n",
       "<title>2195963167600*&#45;&gt;2195963167600</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1740.44,-222.5C1747.52,-222.5 1755.61,-222.5 1764.17,-222.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1764.12,-226 1774.12,-222.5 1764.12,-219 1764.12,-226\"/>\n",
       "</g>\n",
       "<!-- 2195963169664 -->\n",
       "<g id=\"node43\" class=\"node\">\n",
       "<title>2195963169664</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2372.5,-176.5 2372.5,-212.5 2533.5,-212.5 2533.5,-176.5 2372.5,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2412.38\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5643</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2452.25,-177 2452.25,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2492.88\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963169904tanh -->\n",
       "<g id=\"node57\" class=\"node\">\n",
       "<title>2195963169904tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2601\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2601\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963169664&#45;&gt;2195963169904tanh -->\n",
       "<g id=\"edge48\" class=\"edge\">\n",
       "<title>2195963169664&#45;&gt;2195963169904tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2533.83,-194.5C2543.72,-194.5 2553.44,-194.5 2562.25,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2562.13,-198 2572.13,-194.5 2562.13,-191 2562.13,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169664+&#45;&gt;2195963169664 -->\n",
       "<g id=\"edge18\" class=\"edge\">\n",
       "<title>2195963169664+&#45;&gt;2195963169664</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2332.44,-194.5C2340.83,-194.5 2350.62,-194.5 2360.93,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2360.76,-198 2370.76,-194.5 2360.76,-191 2360.76,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962514304 -->\n",
       "<g id=\"node45\" class=\"node\">\n",
       "<title>2195962514304</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"300.5,-55.5 300.5,-91.5 461.5,-91.5 461.5,-55.5 300.5,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"340.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.3072</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"380.25,-56 380.25,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"420.88\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0920</text>\n",
       "</g>\n",
       "<!-- 2195962596512* -->\n",
       "<g id=\"node60\" class=\"node\">\n",
       "<title>2195962596512*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"529\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"529\" y=\"-68.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962514304&#45;&gt;2195962596512* -->\n",
       "<g id=\"edge96\" class=\"edge\">\n",
       "<title>2195962514304&#45;&gt;2195962596512*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M461.83,-73.5C471.72,-73.5 481.44,-73.5 490.25,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"490.13,-77 500.13,-73.5 490.13,-70 490.13,-77\"/>\n",
       "</g>\n",
       "<!-- 2195962526688 -->\n",
       "<g id=\"node46\" class=\"node\">\n",
       "<title>2195962526688</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"890.25,-151.5 890.25,-187.5 1055.75,-187.5 1055.75,-151.5 890.25,-151.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"932.38\" y=\"-164.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.2102</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"974.5,-152 974.5,-187.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1015.12\" y=\"-164.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0307</text>\n",
       "</g>\n",
       "<!-- 2195962526688&#45;&gt;2195962605632+ -->\n",
       "<g id=\"edge74\" class=\"edge\">\n",
       "<title>2195962526688&#45;&gt;2195962605632+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1055.96,-168.38C1065.13,-168.25 1074.11,-168.13 1082.31,-168.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1082.23,-171.52 1092.18,-167.88 1082.13,-164.52 1082.23,-171.52\"/>\n",
       "</g>\n",
       "<!-- 2195962520544 -->\n",
       "<g id=\"node47\" class=\"node\">\n",
       "<title>2195962520544</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"592,-231.5 592,-267.5 762,-267.5 762,-231.5 592,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"634.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6765</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"676.25,-232 676.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"719.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962520544&#45;&gt;2195962511472+ -->\n",
       "<g id=\"edge35\" class=\"edge\">\n",
       "<title>2195962520544&#45;&gt;2195962511472+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M762.08,-265.63C770.92,-267.32 779.54,-268.97 787.4,-270.48\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"786.71,-273.91 797.19,-272.36 788.03,-267.04 786.71,-273.91\"/>\n",
       "</g>\n",
       "<!-- 2195962518528 -->\n",
       "<g id=\"node48\" class=\"node\">\n",
       "<title>2195962518528</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2668.5,-121.5 2668.5,-157.5 2829.5,-157.5 2829.5,-121.5 2668.5,-121.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2708.38\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1561</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2748.25,-122 2748.25,-157.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2788.88\" y=\"-134.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.2270</text>\n",
       "</g>\n",
       "<!-- 2195963170480* -->\n",
       "<g id=\"node86\" class=\"node\">\n",
       "<title>2195963170480*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2897\" cy=\"-194.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2897\" y=\"-189.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962518528&#45;&gt;2195963170480* -->\n",
       "<g id=\"edge86\" class=\"edge\">\n",
       "<title>2195962518528&#45;&gt;2195963170480*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2809.95,-157.85C2818.08,-160.61 2826.28,-163.53 2834,-166.5 2843.93,-170.32 2854.55,-174.92 2864.14,-179.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2862.53,-182.39 2873.07,-183.41 2865.46,-176.04 2862.53,-182.39\"/>\n",
       "</g>\n",
       "<!-- 2195962512384 -->\n",
       "<g id=\"node49\" class=\"node\">\n",
       "<title>2195962512384</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-469.5 0,-505.5 170,-505.5 170,-469.5 0,-469.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4733</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-470 84.25,-505.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"127.12\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0042</text>\n",
       "</g>\n",
       "<!-- 2195962513392* -->\n",
       "<g id=\"node78\" class=\"node\">\n",
       "<title>2195962513392*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"233\" cy=\"-487.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"233\" y=\"-482.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962512384&#45;&gt;2195962513392* -->\n",
       "<g id=\"edge65\" class=\"edge\">\n",
       "<title>2195962512384&#45;&gt;2195962513392*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M170.08,-487.5C178.57,-487.5 186.85,-487.5 194.45,-487.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.26,-491 204.26,-487.5 194.26,-484 194.26,-491\"/>\n",
       "</g>\n",
       "<!-- 2195962516512 -->\n",
       "<g id=\"node50\" class=\"node\">\n",
       "<title>2195962516512</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1480,-204.5 1480,-240.5 1650,-240.5 1650,-204.5 1480,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1522.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.6078</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-205 1564.25,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1607.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962516512&#45;&gt;2195963167600* -->\n",
       "<g id=\"edge94\" class=\"edge\">\n",
       "<title>2195962516512&#45;&gt;2195963167600*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1650.08,-222.5C1658.57,-222.5 1666.85,-222.5 1674.45,-222.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1674.26,-226 1684.26,-222.5 1674.26,-219 1674.26,-226\"/>\n",
       "</g>\n",
       "<!-- 2195962596416 -->\n",
       "<g id=\"node51\" class=\"node\">\n",
       "<title>2195962596416</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1484.5,-149.5 1484.5,-185.5 1645.5,-185.5 1645.5,-149.5 1484.5,-149.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1524.38\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6014</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-150 1564.25,-185.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1604.88\" y=\"-162.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0481</text>\n",
       "</g>\n",
       "<!-- 2195962596416&#45;&gt;2195963169280* -->\n",
       "<g id=\"edge68\" class=\"edge\">\n",
       "<title>2195962596416&#45;&gt;2195963169280*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1645.83,-167.5C1655.72,-167.5 1665.44,-167.5 1674.25,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1674.13,-171 1684.13,-167.5 1674.13,-164 1674.13,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962596416&#45;&gt;2195963167600* -->\n",
       "<g id=\"edge95\" class=\"edge\">\n",
       "<title>2195962596416&#45;&gt;2195963167600*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1625.95,-185.85C1634.08,-188.61 1642.28,-191.53 1650,-194.5 1659.93,-198.32 1670.55,-202.92 1680.14,-207.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1678.53,-210.39 1689.07,-211.41 1681.46,-204.04 1678.53,-210.39\"/>\n",
       "</g>\n",
       "<!-- 2195962596416tanh&#45;&gt;2195962596416 -->\n",
       "<g id=\"edge19\" class=\"edge\">\n",
       "<title>2195962596416tanh&#45;&gt;2195962596416</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1444.44,-167.5C1452.83,-167.5 1462.62,-167.5 1472.93,-167.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1472.76,-171 1482.76,-167.5 1472.76,-164 1472.76,-171\"/>\n",
       "</g>\n",
       "<!-- 2195962522704 -->\n",
       "<g id=\"node53\" class=\"node\">\n",
       "<title>2195962522704</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2664,-286.5 2664,-322.5 2834,-322.5 2834,-286.5 2664,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2706.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0243</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2748.25,-287 2748.25,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2791.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.4375</text>\n",
       "</g>\n",
       "<!-- 2195963170240* -->\n",
       "<g id=\"node74\" class=\"node\">\n",
       "<title>2195963170240*</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2897\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2897\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">*</text>\n",
       "</g>\n",
       "<!-- 2195962522704&#45;&gt;2195963170240* -->\n",
       "<g id=\"edge46\" class=\"edge\">\n",
       "<title>2195962522704&#45;&gt;2195963170240*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2809.95,-286.15C2818.08,-283.39 2826.28,-280.47 2834,-277.5 2843.93,-273.68 2854.55,-269.08 2864.14,-264.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2865.46,-267.96 2873.07,-260.59 2862.53,-261.61 2865.46,-267.96\"/>\n",
       "</g>\n",
       "<!-- 2195963167840 -->\n",
       "<g id=\"node54\" class=\"node\">\n",
       "<title>2195963167840</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2072,-286.5 2072,-322.5 2242,-322.5 2242,-286.5 2072,-286.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2114.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.5181</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2156.25,-287 2156.25,-322.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2199.12\" y=\"-299.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963167984+ -->\n",
       "<g id=\"node62\" class=\"node\">\n",
       "<title>2195963167984+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2305\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2305\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963167840&#45;&gt;2195963167984+ -->\n",
       "<g id=\"edge60\" class=\"edge\">\n",
       "<title>2195963167840&#45;&gt;2195963167984+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2217.95,-286.15C2226.08,-283.39 2234.28,-280.47 2242,-277.5 2251.93,-273.68 2262.55,-269.08 2272.14,-264.72\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2273.46,-267.96 2281.07,-260.59 2270.53,-261.61 2273.46,-267.96\"/>\n",
       "</g>\n",
       "<!-- 2195963167840+&#45;&gt;2195963167840 -->\n",
       "<g id=\"edge20\" class=\"edge\">\n",
       "<title>2195963167840+&#45;&gt;2195963167840</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2036.44,-304.5C2043.52,-304.5 2051.61,-304.5 2060.17,-304.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2060.12,-308 2070.12,-304.5 2060.12,-301 2060.12,-308\"/>\n",
       "</g>\n",
       "<!-- 2195963169904 -->\n",
       "<g id=\"node56\" class=\"node\">\n",
       "<title>2195963169904</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2668.5,-176.5 2668.5,-212.5 2829.5,-212.5 2829.5,-176.5 2668.5,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2708.38\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.5112</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2748.25,-177 2748.25,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2788.88\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0693</text>\n",
       "</g>\n",
       "<!-- 2195963169904&#45;&gt;2195963170480* -->\n",
       "<g id=\"edge67\" class=\"edge\">\n",
       "<title>2195963169904&#45;&gt;2195963170480*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2829.83,-194.5C2839.72,-194.5 2849.44,-194.5 2858.25,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2858.13,-198 2868.13,-194.5 2858.13,-191 2858.13,-198\"/>\n",
       "</g>\n",
       "<!-- 2195963169904tanh&#45;&gt;2195963169904 -->\n",
       "<g id=\"edge21\" class=\"edge\">\n",
       "<title>2195963169904tanh&#45;&gt;2195963169904</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2628.44,-194.5C2636.83,-194.5 2646.62,-194.5 2656.93,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2656.76,-198 2666.76,-194.5 2656.76,-191 2656.76,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962524768 -->\n",
       "<g id=\"node58\" class=\"node\">\n",
       "<title>2195962524768</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"3247,-258.5 3247,-294.5 3408,-294.5 3408,-258.5 3247,-258.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3286.88\" y=\"-271.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.8591</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3326.75,-259 3326.75,-294.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3367.38\" y=\"-271.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.4442</text>\n",
       "</g>\n",
       "<!-- 2195962524768&#45;&gt;2195963170864+ -->\n",
       "<g id=\"edge83\" class=\"edge\">\n",
       "<title>2195962524768&#45;&gt;2195963170864+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3408.35,-260.7C3417.09,-258.97 3425.64,-257.28 3433.46,-255.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3434.08,-259.18 3443.21,-253.8 3432.72,-252.31 3434.08,-259.18\"/>\n",
       "</g>\n",
       "<!-- 2195962596512 -->\n",
       "<g id=\"node59\" class=\"node\">\n",
       "<title>2195962596512</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"596.5,-55.5 596.5,-91.5 757.5,-91.5 757.5,-55.5 596.5,-55.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"636.38\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9215</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"676.25,-56 676.25,-91.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"716.88\" y=\"-68.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0307</text>\n",
       "</g>\n",
       "<!-- 2195962596512&#45;&gt;2195962594592+ -->\n",
       "<g id=\"edge89\" class=\"edge\">\n",
       "<title>2195962596512&#45;&gt;2195962594592+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M743.74,-91.96C759.35,-96.34 775.41,-100.85 789.02,-104.68\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"787.78,-107.96 798.36,-107.3 789.68,-101.23 787.78,-107.96\"/>\n",
       "</g>\n",
       "<!-- 2195962596512*&#45;&gt;2195962596512 -->\n",
       "<g id=\"edge22\" class=\"edge\">\n",
       "<title>2195962596512*&#45;&gt;2195962596512</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M556.44,-73.5C564.83,-73.5 574.62,-73.5 584.93,-73.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"584.76,-77 594.76,-73.5 584.76,-70 584.76,-77\"/>\n",
       "</g>\n",
       "<!-- 2195963167984 -->\n",
       "<g id=\"node61\" class=\"node\">\n",
       "<title>2195963167984</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2368,-231.5 2368,-267.5 2538,-267.5 2538,-231.5 2368,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2410.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.4411</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2452.25,-232 2452.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2495.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195963168224tanh -->\n",
       "<g id=\"node81\" class=\"node\">\n",
       "<title>2195963168224tanh</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"2601\" cy=\"-249.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2601\" y=\"-244.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">tanh</text>\n",
       "</g>\n",
       "<!-- 2195963167984&#45;&gt;2195963168224tanh -->\n",
       "<g id=\"edge51\" class=\"edge\">\n",
       "<title>2195963167984&#45;&gt;2195963168224tanh</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2538.08,-249.5C2546.57,-249.5 2554.85,-249.5 2562.45,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2562.26,-253 2572.26,-249.5 2562.26,-246 2562.26,-253\"/>\n",
       "</g>\n",
       "<!-- 2195963167984+&#45;&gt;2195963167984 -->\n",
       "<g id=\"edge23\" class=\"edge\">\n",
       "<title>2195963167984+&#45;&gt;2195963167984</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2332.44,-249.5C2339.52,-249.5 2347.61,-249.5 2356.17,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2356.12,-253 2366.12,-249.5 2356.12,-246 2356.12,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962526976 -->\n",
       "<g id=\"node63\" class=\"node\">\n",
       "<title>2195962526976</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"296,-524.5 296,-560.5 466,-560.5 466,-524.5 296,-524.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"338.12\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;1.4100</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"380.25,-525 380.25,-560.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"423.12\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0021</text>\n",
       "</g>\n",
       "<!-- 2195962512720+ -->\n",
       "<g id=\"node70\" class=\"node\">\n",
       "<title>2195962512720+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"529\" cy=\"-490.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"529\" y=\"-485.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195962526976&#45;&gt;2195962512720+ -->\n",
       "<g id=\"edge91\" class=\"edge\">\n",
       "<title>2195962526976&#45;&gt;2195962512720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M441.38,-524C449.68,-521.25 458.08,-518.37 466,-515.5 475.49,-512.07 485.69,-508.08 495.02,-504.31\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"496.14,-507.63 504.08,-500.61 493.49,-501.16 496.14,-507.63\"/>\n",
       "</g>\n",
       "<!-- 2195962526976*&#45;&gt;2195962526976 -->\n",
       "<g id=\"edge24\" class=\"edge\">\n",
       "<title>2195962526976*&#45;&gt;2195962526976</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M260.44,-542.5C267.52,-542.5 275.61,-542.5 284.17,-542.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"284.12,-546 294.12,-542.5 284.12,-539 284.12,-546\"/>\n",
       "</g>\n",
       "<!-- 2195962514688 -->\n",
       "<g id=\"node65\" class=\"node\">\n",
       "<title>2195962514688</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2072,-231.5 2072,-267.5 2242,-267.5 2242,-231.5 2072,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2114.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9230</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2156.25,-232 2156.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2199.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0003</text>\n",
       "</g>\n",
       "<!-- 2195962514688&#45;&gt;2195963167984+ -->\n",
       "<g id=\"edge84\" class=\"edge\">\n",
       "<title>2195962514688&#45;&gt;2195963167984+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2242.08,-249.5C2250.57,-249.5 2258.85,-249.5 2266.45,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2266.26,-253 2276.26,-249.5 2266.26,-246 2266.26,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962594592 -->\n",
       "<g id=\"node66\" class=\"node\">\n",
       "<title>2195962594592</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"892.5,-96.5 892.5,-132.5 1053.5,-132.5 1053.5,-96.5 892.5,-96.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"932.38\" y=\"-109.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9056</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"972.25,-97 972.25,-132.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1012.88\" y=\"-109.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0307</text>\n",
       "</g>\n",
       "<!-- 2195962594592&#45;&gt;2195962605632+ -->\n",
       "<g id=\"edge61\" class=\"edge\">\n",
       "<title>2195962594592&#45;&gt;2195962605632+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1033.42,-132.89C1041.71,-135.67 1050.1,-138.58 1058,-141.5 1067.6,-145.05 1077.9,-149.22 1087.29,-153.16\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1085.84,-156.35 1096.41,-157.05 1088.58,-149.91 1085.84,-156.35\"/>\n",
       "</g>\n",
       "<!-- 2195962594592+&#45;&gt;2195962594592 -->\n",
       "<g id=\"edge25\" class=\"edge\">\n",
       "<title>2195962594592+&#45;&gt;2195962594592</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M852.44,-114.5C860.83,-114.5 870.62,-114.5 880.93,-114.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"880.76,-118 890.76,-114.5 880.76,-111 880.76,-118\"/>\n",
       "</g>\n",
       "<!-- 2195962522944 -->\n",
       "<g id=\"node68\" class=\"node\">\n",
       "<title>2195962522944</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"4.5,-192.5 4.5,-228.5 165.5,-228.5 165.5,-192.5 4.5,-192.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"44.38\" y=\"-205.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-193 84.25,-228.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-205.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962522944&#45;&gt;2195962512864* -->\n",
       "<g id=\"edge58\" class=\"edge\">\n",
       "<title>2195962522944&#45;&gt;2195962512864*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M145.95,-228.85C154.08,-231.61 162.28,-234.53 170,-237.5 179.93,-241.32 190.55,-245.92 200.14,-250.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"198.53,-253.39 209.07,-254.41 201.46,-247.04 198.53,-253.39\"/>\n",
       "</g>\n",
       "<!-- 2195962512720 -->\n",
       "<g id=\"node69\" class=\"node\">\n",
       "<title>2195962512720</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"592,-472.5 592,-508.5 762,-508.5 762,-472.5 592,-472.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"634.12\" y=\"-485.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.3565</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"676.25,-473 676.25,-508.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"719.12\" y=\"-485.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0021</text>\n",
       "</g>\n",
       "<!-- 2195962512720&#45;&gt;2195962513584+ -->\n",
       "<g id=\"edge88\" class=\"edge\">\n",
       "<title>2195962512720&#45;&gt;2195962513584+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M735.88,-472.03C744.64,-469.19 753.56,-466.28 762,-463.5 770.95,-460.54 780.62,-457.3 789.59,-454.26\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"790.7,-457.58 799.04,-451.05 788.45,-450.95 790.7,-457.58\"/>\n",
       "</g>\n",
       "<!-- 2195962512720+&#45;&gt;2195962512720 -->\n",
       "<g id=\"edge26\" class=\"edge\">\n",
       "<title>2195962512720+&#45;&gt;2195962512720</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M556.44,-490.5C563.52,-490.5 571.61,-490.5 580.17,-490.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"580.12,-494 590.12,-490.5 580.12,-487 580.12,-494\"/>\n",
       "</g>\n",
       "<!-- 2195962518912 -->\n",
       "<g id=\"node71\" class=\"node\">\n",
       "<title>2195962518912</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1184,-204.5 1184,-240.5 1354,-240.5 1354,-204.5 1184,-204.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1226.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.1422</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-205 1268.25,-240.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1311.12\" y=\"-217.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0506</text>\n",
       "</g>\n",
       "<!-- 2195962518912&#45;&gt;2195963168800* -->\n",
       "<g id=\"edge53\" class=\"edge\">\n",
       "<title>2195962518912&#45;&gt;2195963168800*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1327.63,-240.95C1336.51,-244.01 1345.53,-247.25 1354,-250.5 1363.8,-254.26 1374.31,-258.68 1383.84,-262.85\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1382.16,-265.93 1392.72,-266.78 1384.99,-259.53 1382.16,-265.93\"/>\n",
       "</g>\n",
       "<!-- 2195962514880 -->\n",
       "<g id=\"node72\" class=\"node\">\n",
       "<title>2195962514880</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"298.25,-110.5 298.25,-146.5 463.75,-146.5 463.75,-110.5 298.25,-110.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"340.38\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.0080</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"382.5,-111 382.5,-146.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"423.12\" y=\"-123.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0613</text>\n",
       "</g>\n",
       "<!-- 2195962514880&#45;&gt;2195962606256* -->\n",
       "<g id=\"edge38\" class=\"edge\">\n",
       "<title>2195962514880&#45;&gt;2195962606256*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M463.96,-128.5C473.13,-128.5 482.11,-128.5 490.31,-128.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"490.18,-132 500.18,-128.5 490.18,-125 490.18,-132\"/>\n",
       "</g>\n",
       "<!-- 2195963170240 -->\n",
       "<g id=\"node73\" class=\"node\">\n",
       "<title>2195963170240</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2960,-231.5 2960,-267.5 3121,-267.5 3121,-231.5 2960,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2999.88\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0239</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3039.75,-232 3039.75,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3080.38\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.4442</text>\n",
       "</g>\n",
       "<!-- 2195963170720+ -->\n",
       "<g id=\"node92\" class=\"node\">\n",
       "<title>2195963170720+</title>\n",
       "<ellipse fill=\"lightgray\" stroke=\"black\" cx=\"3184\" cy=\"-221.5\" rx=\"27\" ry=\"18\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3184\" y=\"-216.45\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">+</text>\n",
       "</g>\n",
       "<!-- 2195963170240&#45;&gt;2195963170720+ -->\n",
       "<g id=\"edge39\" class=\"edge\">\n",
       "<title>2195963170240&#45;&gt;2195963170720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3121.35,-233.7C3130.09,-231.97 3138.64,-230.28 3146.46,-228.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3147.08,-232.18 3156.21,-226.8 3145.72,-225.31 3147.08,-232.18\"/>\n",
       "</g>\n",
       "<!-- 2195963170240*&#45;&gt;2195963170240 -->\n",
       "<g id=\"edge27\" class=\"edge\">\n",
       "<title>2195963170240*&#45;&gt;2195963170240</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2924.28,-249.5C2931.4,-249.5 2939.52,-249.5 2948.08,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2948.04,-253 2958.04,-249.5 2948.04,-246 2948.04,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962512864 -->\n",
       "<g id=\"node75\" class=\"node\">\n",
       "<title>2195962512864</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"296,-247.5 296,-283.5 466,-283.5 466,-247.5 296,-247.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"338.12\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;2.4452</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"380.25,-248 380.25,-283.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"423.12\" y=\"-260.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0002</text>\n",
       "</g>\n",
       "<!-- 2195962512864&#45;&gt;2195962520112+ -->\n",
       "<g id=\"edge40\" class=\"edge\">\n",
       "<title>2195962512864&#45;&gt;2195962520112+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M451.15,-283.97C465.49,-287.8 480.02,-291.68 492.53,-295.02\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"491.36,-298.34 501.92,-297.53 493.17,-291.57 491.36,-298.34\"/>\n",
       "</g>\n",
       "<!-- 2195962512864*&#45;&gt;2195962512864 -->\n",
       "<g id=\"edge28\" class=\"edge\">\n",
       "<title>2195962512864*&#45;&gt;2195962512864</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M260.44,-265.5C267.52,-265.5 275.61,-265.5 284.17,-265.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"284.12,-269 294.12,-265.5 284.12,-262 284.12,-269\"/>\n",
       "</g>\n",
       "<!-- 2195962513392 -->\n",
       "<g id=\"node77\" class=\"node\">\n",
       "<title>2195962513392</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"296,-469.5 296,-505.5 466,-505.5 466,-469.5 296,-469.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"338.12\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9466</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"380.25,-470 380.25,-505.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"423.12\" y=\"-482.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0021</text>\n",
       "</g>\n",
       "<!-- 2195962513392&#45;&gt;2195962512720+ -->\n",
       "<g id=\"edge71\" class=\"edge\">\n",
       "<title>2195962513392&#45;&gt;2195962512720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M466.08,-489.23C474.57,-489.4 482.85,-489.57 490.45,-489.73\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"490.19,-493.22 500.26,-489.93 490.34,-486.23 490.19,-493.22\"/>\n",
       "</g>\n",
       "<!-- 2195962513392*&#45;&gt;2195962513392 -->\n",
       "<g id=\"edge29\" class=\"edge\">\n",
       "<title>2195962513392*&#45;&gt;2195962513392</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M260.44,-487.5C267.52,-487.5 275.61,-487.5 284.17,-487.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"284.12,-491 294.12,-487.5 284.12,-484 284.12,-491\"/>\n",
       "</g>\n",
       "<!-- 2195962521072 -->\n",
       "<g id=\"node79\" class=\"node\">\n",
       "<title>2195962521072</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"4.5,-414.5 4.5,-450.5 165.5,-450.5 165.5,-414.5 4.5,-414.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"44.38\" y=\"-427.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 2.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-415 84.25,-450.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-427.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0010</text>\n",
       "</g>\n",
       "<!-- 2195962521072&#45;&gt;2195962513392* -->\n",
       "<g id=\"edge80\" class=\"edge\">\n",
       "<title>2195962521072&#45;&gt;2195962513392*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M143.63,-450.95C152.51,-454.01 161.53,-457.25 170,-460.5 179.8,-464.26 190.31,-468.68 199.84,-472.85\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"198.16,-475.93 208.72,-476.78 200.99,-469.53 198.16,-475.93\"/>\n",
       "</g>\n",
       "<!-- 2195963168224 -->\n",
       "<g id=\"node80\" class=\"node\">\n",
       "<title>2195963168224</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2664,-231.5 2664,-267.5 2834,-267.5 2834,-231.5 2664,-231.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2706.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9850</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"2748.25,-232 2748.25,-267.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2791.12\" y=\"-244.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0108</text>\n",
       "</g>\n",
       "<!-- 2195963168224&#45;&gt;2195963170240* -->\n",
       "<g id=\"edge45\" class=\"edge\">\n",
       "<title>2195963168224&#45;&gt;2195963170240*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2834.08,-249.5C2842.57,-249.5 2850.85,-249.5 2858.45,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2858.26,-253 2868.26,-249.5 2858.26,-246 2858.26,-253\"/>\n",
       "</g>\n",
       "<!-- 2195963168224tanh&#45;&gt;2195963168224 -->\n",
       "<g id=\"edge30\" class=\"edge\">\n",
       "<title>2195963168224tanh&#45;&gt;2195963168224</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2628.44,-249.5C2635.52,-249.5 2643.61,-249.5 2652.17,-249.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2652.12,-253 2662.12,-249.5 2652.12,-246 2652.12,-253\"/>\n",
       "</g>\n",
       "<!-- 2195962519056 -->\n",
       "<g id=\"node82\" class=\"node\">\n",
       "<title>2195962519056</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"1188.5,-314.5 1188.5,-350.5 1349.5,-350.5 1349.5,-314.5 1188.5,-314.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1228.38\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.9452</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-315 1268.25,-350.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1308.88\" y=\"-327.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0003</text>\n",
       "</g>\n",
       "<!-- 2195962519056&#45;&gt;2195963167120* -->\n",
       "<g id=\"edge77\" class=\"edge\">\n",
       "<title>2195962519056&#45;&gt;2195963167120*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1349.83,-332.5C1359.72,-332.5 1369.44,-332.5 1378.25,-332.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1378.13,-336 1388.13,-332.5 1378.13,-329 1378.13,-336\"/>\n",
       "</g>\n",
       "<!-- 2195962527312 -->\n",
       "<g id=\"node83\" class=\"node\">\n",
       "<title>2195962527312</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"2.25,-302.5 2.25,-338.5 167.75,-338.5 167.75,-302.5 2.25,-302.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2887</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"82,-303 82,-338.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.88\" y=\"-315.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0004</text>\n",
       "</g>\n",
       "<!-- 2195962527312&#45;&gt;2195962513776* -->\n",
       "<g id=\"edge76\" class=\"edge\">\n",
       "<title>2195962527312&#45;&gt;2195962513776*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M167.96,-320.5C177.13,-320.5 186.11,-320.5 194.31,-320.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.18,-324 204.18,-320.5 194.18,-317 194.18,-324\"/>\n",
       "</g>\n",
       "<!-- 2195962519152 -->\n",
       "<g id=\"node84\" class=\"node\">\n",
       "<title>2195962519152</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"0,-524.5 0,-560.5 170,-560.5 170,-524.5 0,-524.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"42.12\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.4700</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"84.25,-525 84.25,-560.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"127.12\" y=\"-537.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0063</text>\n",
       "</g>\n",
       "<!-- 2195962519152&#45;&gt;2195962526976* -->\n",
       "<g id=\"edge93\" class=\"edge\">\n",
       "<title>2195962519152&#45;&gt;2195962526976*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M170.08,-542.5C178.57,-542.5 186.85,-542.5 194.45,-542.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.26,-546 204.26,-542.5 194.26,-539 194.26,-546\"/>\n",
       "</g>\n",
       "<!-- 2195963170480 -->\n",
       "<g id=\"node85\" class=\"node\">\n",
       "<title>2195963170480</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"2960,-176.5 2960,-212.5 3121,-212.5 3121,-176.5 2960,-176.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"2999.88\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.0798</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3039.75,-177 3039.75,-212.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3080.38\" y=\"-189.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.4442</text>\n",
       "</g>\n",
       "<!-- 2195963170480&#45;&gt;2195963170720+ -->\n",
       "<g id=\"edge57\" class=\"edge\">\n",
       "<title>2195963170480&#45;&gt;2195963170720+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3121.35,-209.74C3130.09,-211.4 3138.64,-213.04 3146.46,-214.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3145.73,-217.95 3156.21,-216.39 3147.04,-211.08 3145.73,-217.95\"/>\n",
       "</g>\n",
       "<!-- 2195963170480*&#45;&gt;2195963170480 -->\n",
       "<g id=\"edge31\" class=\"edge\">\n",
       "<title>2195963170480*&#45;&gt;2195963170480</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M2924.28,-194.5C2931.4,-194.5 2939.52,-194.5 2948.08,-194.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"2948.04,-198 2958.04,-194.5 2948.04,-191 2948.04,-198\"/>\n",
       "</g>\n",
       "<!-- 2195962521264 -->\n",
       "<g id=\"node87\" class=\"node\">\n",
       "<title>2195962521264</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"594.25,-417.5 594.25,-453.5 759.75,-453.5 759.75,-417.5 594.25,-417.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"634.12\" y=\"-430.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.6977</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"674,-418 674,-453.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"716.88\" y=\"-430.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0021</text>\n",
       "</g>\n",
       "<!-- 2195962521264&#45;&gt;2195962513584+ -->\n",
       "<g id=\"edge54\" class=\"edge\">\n",
       "<title>2195962521264&#45;&gt;2195962513584+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M759.96,-439.43C769.13,-439.87 778.11,-440.3 786.31,-440.69\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"786.02,-444.18 796.18,-441.17 786.36,-437.19 786.02,-444.18\"/>\n",
       "</g>\n",
       "<!-- 2195962597136 -->\n",
       "<g id=\"node88\" class=\"node\">\n",
       "<title>2195962597136</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"300.5,-0.5 300.5,-36.5 461.5,-36.5 461.5,-0.5 300.5,-0.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"340.38\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 3.0000</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"380.25,-1 380.25,-36.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"420.88\" y=\"-13.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0094</text>\n",
       "</g>\n",
       "<!-- 2195962597136&#45;&gt;2195962596512* -->\n",
       "<g id=\"edge92\" class=\"edge\">\n",
       "<title>2195962597136&#45;&gt;2195962596512*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M441.95,-36.85C450.08,-39.61 458.28,-42.53 466,-45.5 475.93,-49.32 486.55,-53.92 496.14,-58.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"494.53,-61.39 505.07,-62.41 497.46,-55.04 494.53,-61.39\"/>\n",
       "</g>\n",
       "<!-- 2195963168560 -->\n",
       "<g id=\"node89\" class=\"node\">\n",
       "<title>2195963168560</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1484.5,-369.5 1484.5,-405.5 1645.5,-405.5 1645.5,-369.5 1484.5,-369.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1524.38\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.2817</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1564.25,-370 1564.25,-405.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1604.88\" y=\"-382.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.0512</text>\n",
       "</g>\n",
       "<!-- 2195963168560&#45;&gt;2195963169040+ -->\n",
       "<g id=\"edge49\" class=\"edge\">\n",
       "<title>2195963168560&#45;&gt;2195963169040+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1636.18,-369.14C1641.07,-366.61 1645.74,-363.75 1650,-360.5 1673.24,-342.79 1668,-328.51 1686,-305.5 1687.18,-303.99 1688.43,-302.47 1689.71,-300.95\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1692.19,-303.43 1696.21,-293.62 1686.95,-298.78 1692.19,-303.43\"/>\n",
       "</g>\n",
       "<!-- 2195963168560*&#45;&gt;2195963168560 -->\n",
       "<g id=\"edge32\" class=\"edge\">\n",
       "<title>2195963168560*&#45;&gt;2195963168560</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1444.44,-387.5C1452.83,-387.5 1462.62,-387.5 1472.93,-387.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1472.76,-391 1482.76,-387.5 1472.76,-384 1472.76,-391\"/>\n",
       "</g>\n",
       "<!-- 2195963170720 -->\n",
       "<g id=\"node91\" class=\"node\">\n",
       "<title>2195963170720</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"3247,-203.5 3247,-239.5 3408,-239.5 3408,-203.5 3247,-203.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3286.88\" y=\"-216.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data 0.1037</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"3326.75,-204 3326.75,-239.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"3367.38\" y=\"-216.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad 0.4442</text>\n",
       "</g>\n",
       "<!-- 2195963170720&#45;&gt;2195963170864+ -->\n",
       "<g id=\"edge72\" class=\"edge\">\n",
       "<title>2195963170720&#45;&gt;2195963170864+</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3408.35,-236.74C3417.09,-238.4 3425.64,-240.04 3433.46,-241.53\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3432.73,-244.95 3443.21,-243.39 3434.04,-238.08 3432.73,-244.95\"/>\n",
       "</g>\n",
       "<!-- 2195963170720+&#45;&gt;2195963170720 -->\n",
       "<g id=\"edge33\" class=\"edge\">\n",
       "<title>2195963170720+&#45;&gt;2195963170720</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M3211.28,-221.5C3218.4,-221.5 3226.52,-221.5 3235.08,-221.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"3235.04,-225 3245.04,-221.5 3235.04,-218 3235.04,-225\"/>\n",
       "</g>\n",
       "<!-- 2195962607600 -->\n",
       "<g id=\"node93\" class=\"node\">\n",
       "<title>2195962607600</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"1184,-259.5 1184,-295.5 1354,-295.5 1354,-259.5 1184,-259.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1226.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">data &#45;0.9877</text>\n",
       "<polyline fill=\"none\" stroke=\"black\" points=\"1268.25,-260 1268.25,-295.5\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"1311.12\" y=\"-272.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">grad &#45;0.0076</text>\n",
       "</g>\n",
       "<!-- 2195962607600&#45;&gt;2195963168800* -->\n",
       "<g id=\"edge85\" class=\"edge\">\n",
       "<title>2195962607600&#45;&gt;2195963168800*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1354.08,-277.5C1362.57,-277.5 1370.85,-277.5 1378.45,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1378.26,-281 1388.26,-277.5 1378.26,-274 1378.26,-281\"/>\n",
       "</g>\n",
       "<!-- 2195962607600&#45;&gt;2195963167120* -->\n",
       "<g id=\"edge50\" class=\"edge\">\n",
       "<title>2195962607600&#45;&gt;2195963167120*</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1327.63,-295.95C1336.51,-299.01 1345.53,-302.25 1354,-305.5 1363.8,-309.26 1374.31,-313.68 1383.84,-317.85\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1382.16,-320.93 1392.72,-321.78 1384.99,-314.53 1382.16,-320.93\"/>\n",
       "</g>\n",
       "<!-- 2195962607600tanh&#45;&gt;2195962607600 -->\n",
       "<g id=\"edge34\" class=\"edge\">\n",
       "<title>2195962607600tanh&#45;&gt;2195962607600</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M1148.44,-277.5C1155.52,-277.5 1163.61,-277.5 1172.17,-277.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"1172.12,-281 1182.12,-277.5 1172.12,-274 1172.12,-281\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff49922f80>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "M = Ms[0]\n",
    "M.backward() # 进行反向传播\n",
    "\n",
    "# 画出计算图（包含了反向传播后的梯度）\n",
    "draw_dots(M)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "71ec1413-9c2f-4ded-ba09-8b1a8365c6ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"314pt\" height=\"221pt\"\n",
       " viewBox=\"0.00 0.00 314.00 221.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 216.69)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-216.69 309.9,-216.69 309.9,4 -4,4\"/>\n",
       "<!-- input_0 -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>input_0</title>\n",
       "<ellipse fill=\"lightblue\" stroke=\"black\" cx=\"20.13\" cy=\"-135.34\" rx=\"20.13\" ry=\"20.13\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"20.13\" y=\"-130.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x1</text>\n",
       "</g>\n",
       "<!-- layer0_neuron0 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>layer0_neuron0</title>\n",
       "<ellipse fill=\"lightyellow\" stroke=\"black\" cx=\"105.61\" cy=\"-183.34\" rx=\"29.34\" ry=\"29.34\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"105.61\" y=\"-178.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">h1^1</text>\n",
       "</g>\n",
       "<!-- input_0&#45;&gt;layer0_neuron0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>input_0&#45;&gt;layer0_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M38.02,-145.06C47.14,-150.3 58.75,-156.97 69.71,-163.28\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"67.77,-166.2 78.19,-168.15 71.26,-160.13 67.77,-166.2\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron1 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>layer0_neuron1</title>\n",
       "<ellipse fill=\"lightyellow\" stroke=\"black\" cx=\"105.61\" cy=\"-106.34\" rx=\"29.34\" ry=\"29.34\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"105.61\" y=\"-101.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">h2^1</text>\n",
       "</g>\n",
       "<!-- input_0&#45;&gt;layer0_neuron1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>input_0&#45;&gt;layer0_neuron1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M39.66,-128.91C47.67,-126.13 57.35,-122.76 66.76,-119.49\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"67.85,-122.82 76.15,-116.23 65.55,-116.21 67.85,-122.82\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron2 -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>layer0_neuron2</title>\n",
       "<ellipse fill=\"lightyellow\" stroke=\"black\" cx=\"105.61\" cy=\"-29.34\" rx=\"29.34\" ry=\"29.34\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"105.61\" y=\"-24.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">h3^1</text>\n",
       "</g>\n",
       "<!-- input_0&#45;&gt;layer0_neuron2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>input_0&#45;&gt;layer0_neuron2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M33.45,-119.7C45.58,-104.29 64.47,-80.3 79.74,-60.92\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"82.31,-63.31 85.75,-53.29 76.81,-58.98 82.31,-63.31\"/>\n",
       "</g>\n",
       "<!-- input_1 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>input_1</title>\n",
       "<ellipse fill=\"lightblue\" stroke=\"black\" cx=\"20.13\" cy=\"-77.34\" rx=\"20.13\" ry=\"20.13\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"20.13\" y=\"-72.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">x2</text>\n",
       "</g>\n",
       "<!-- input_1&#45;&gt;layer0_neuron0 -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>input_1&#45;&gt;layer0_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M33.45,-92.98C45.58,-108.4 64.47,-132.38 79.74,-151.77\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"76.81,-153.7 85.75,-159.39 82.31,-149.37 76.81,-153.7\"/>\n",
       "</g>\n",
       "<!-- input_1&#45;&gt;layer0_neuron1 -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>input_1&#45;&gt;layer0_neuron1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M39.66,-83.78C47.67,-86.56 57.35,-89.93 66.76,-93.2\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"65.55,-96.48 76.15,-96.46 67.85,-89.87 65.55,-96.48\"/>\n",
       "</g>\n",
       "<!-- input_1&#45;&gt;layer0_neuron2 -->\n",
       "<g id=\"edge6\" class=\"edge\">\n",
       "<title>input_1&#45;&gt;layer0_neuron2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M38.02,-67.63C47.14,-62.39 58.75,-55.71 69.71,-49.41\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"71.26,-52.55 78.19,-44.53 67.77,-46.49 71.26,-52.55\"/>\n",
       "</g>\n",
       "<!-- layer1_neuron0 -->\n",
       "<g id=\"node6\" class=\"node\">\n",
       "<title>layer1_neuron0</title>\n",
       "<ellipse fill=\"lightyellow\" stroke=\"black\" cx=\"200.29\" cy=\"-144.34\" rx=\"29.34\" ry=\"29.34\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"200.29\" y=\"-139.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">h1^2</text>\n",
       "</g>\n",
       "<!-- layer0_neuron0&#45;&gt;layer1_neuron0 -->\n",
       "<g id=\"edge7\" class=\"edge\">\n",
       "<title>layer0_neuron0&#45;&gt;layer1_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.92,-172.27C142.12,-168.4 152.62,-163.98 162.51,-159.82\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"163.66,-163.13 171.52,-156.03 160.95,-156.68 163.66,-163.13\"/>\n",
       "</g>\n",
       "<!-- layer1_neuron1 -->\n",
       "<g id=\"node7\" class=\"node\">\n",
       "<title>layer1_neuron1</title>\n",
       "<ellipse fill=\"lightyellow\" stroke=\"black\" cx=\"200.29\" cy=\"-67.34\" rx=\"29.34\" ry=\"29.34\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"200.29\" y=\"-62.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">h2^2</text>\n",
       "</g>\n",
       "<!-- layer0_neuron0&#45;&gt;layer1_neuron1 -->\n",
       "<g id=\"edge8\" class=\"edge\">\n",
       "<title>layer0_neuron0&#45;&gt;layer1_neuron1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M124.7,-160.7C138.8,-143.06 158.54,-118.35 174.17,-98.79\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"176.79,-101.11 180.3,-91.11 171.33,-96.74 176.79,-101.11\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron1&#45;&gt;layer1_neuron0 -->\n",
       "<g id=\"edge9\" class=\"edge\">\n",
       "<title>layer0_neuron1&#45;&gt;layer1_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.92,-117.13C141.94,-120.83 152.22,-125.04 161.94,-129.03\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"160.61,-132.27 171.19,-132.82 163.27,-125.79 160.61,-132.27\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron1&#45;&gt;layer1_neuron1 -->\n",
       "<g id=\"edge10\" class=\"edge\">\n",
       "<title>layer0_neuron1&#45;&gt;layer1_neuron1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.92,-95.27C142.12,-91.4 152.62,-86.98 162.51,-82.82\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"163.66,-86.13 171.52,-79.03 160.95,-79.68 163.66,-86.13\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron2&#45;&gt;layer1_neuron0 -->\n",
       "<g id=\"edge11\" class=\"edge\">\n",
       "<title>layer0_neuron2&#45;&gt;layer1_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M124.92,-52.06C138.95,-69.47 158.46,-93.68 173.98,-112.94\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"171.07,-114.9 180.07,-120.49 176.52,-110.51 171.07,-114.9\"/>\n",
       "</g>\n",
       "<!-- layer0_neuron2&#45;&gt;layer1_neuron1 -->\n",
       "<g id=\"edge12\" class=\"edge\">\n",
       "<title>layer0_neuron2&#45;&gt;layer1_neuron1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M132.92,-40.13C141.94,-43.83 152.22,-48.04 161.94,-52.03\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"160.61,-55.27 171.19,-55.82 163.27,-48.79 160.61,-55.27\"/>\n",
       "</g>\n",
       "<!-- layer2_neuron0 -->\n",
       "<g id=\"node8\" class=\"node\">\n",
       "<title>layer2_neuron0</title>\n",
       "<ellipse fill=\"lightgreen\" stroke=\"black\" cx=\"285.77\" cy=\"-105.34\" rx=\"20.13\" ry=\"20.13\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"285.77\" y=\"-100.29\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">y1</text>\n",
       "</g>\n",
       "<!-- layer1_neuron0&#45;&gt;layer2_neuron0 -->\n",
       "<g id=\"edge13\" class=\"edge\">\n",
       "<title>layer1_neuron0&#45;&gt;layer2_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M227.25,-132.22C236.64,-127.83 247.27,-122.86 256.83,-118.4\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"258.08,-121.68 265.65,-114.27 255.11,-115.34 258.08,-121.68\"/>\n",
       "</g>\n",
       "<!-- layer1_neuron1&#45;&gt;layer2_neuron0 -->\n",
       "<g id=\"edge14\" class=\"edge\">\n",
       "<title>layer1_neuron1&#45;&gt;layer2_neuron0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M227.25,-79.16C236.64,-83.43 247.27,-88.28 256.83,-92.62\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"255.1,-95.68 265.65,-96.64 258,-89.31 255.1,-95.68\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff499ae140>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlp_layers = [(2, 3), (3, 2), (2, 1)]  # 对应 Layer(2,3), Layer(3,2), Layer(2,1)\n",
    "draw_mlp_line(mlp_layers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "329c95b2-bde0-4070-8374-ff5d93939850",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 14.0.2 (20251019.1705)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"363pt\" height=\"49pt\"\n",
       " viewBox=\"0.00 0.00 363.00 49.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 45)\">\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-45 358.5,-45 358.5,4 -4,4\"/>\n",
       "<!-- input -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>input</title>\n",
       "<polygon fill=\"lightblue\" stroke=\"black\" points=\"54,-41 0,-41 0,0 54,0 54,-41\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"27\" y=\"-23.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Input</text>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"27\" y=\"-7.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">2</text>\n",
       "</g>\n",
       "<!-- layer0 -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>layer0</title>\n",
       "<polygon fill=\"lightyellow\" stroke=\"black\" points=\"159.25,-41 90,-41 90,0 159.25,0 159.25,-41\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.62\" y=\"-23.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Hidden 1</text>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"124.62\" y=\"-7.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">3 neurons</text>\n",
       "</g>\n",
       "<!-- input&#45;&gt;layer0 -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>input&#45;&gt;layer0</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.38,-20.5C61.82,-20.5 70.14,-20.5 78.35,-20.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"78.28,-24 88.28,-20.5 78.28,-17 78.28,-24\"/>\n",
       "</g>\n",
       "<!-- layer1 -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>layer1</title>\n",
       "<polygon fill=\"lightyellow\" stroke=\"black\" points=\"264.5,-41 195.25,-41 195.25,0 264.5,0 264.5,-41\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"229.88\" y=\"-23.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Hidden 2</text>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"229.88\" y=\"-7.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">2 neurons</text>\n",
       "</g>\n",
       "<!-- layer0&#45;&gt;layer1 -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>layer0&#45;&gt;layer1</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M159.72,-20.5C167.3,-20.5 175.45,-20.5 183.4,-20.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"183.3,-24 193.3,-20.5 183.3,-17 183.3,-24\"/>\n",
       "</g>\n",
       "<!-- layer2 -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>layer2</title>\n",
       "<polygon fill=\"lightgreen\" stroke=\"black\" points=\"354.5,-41 300.5,-41 300.5,0 354.5,0 354.5,-41\"/>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"327.5\" y=\"-23.7\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Output</text>\n",
       "<text xml:space=\"preserve\" text-anchor=\"middle\" x=\"327.5\" y=\"-7.2\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">1</text>\n",
       "</g>\n",
       "<!-- layer1&#45;&gt;layer2 -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>layer1&#45;&gt;layer2</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M264.86,-20.5C272.56,-20.5 280.78,-20.5 288.63,-20.5\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"288.63,-24 298.63,-20.5 288.63,-17 288.63,-24\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x1ff499adf60>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlp_simple_layers = [(2,3), (3,2), (2,1)]\n",
    "draw_mlp_simple(mlp_simple_layers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "00d559ea-aa86-42d5-8223-f0e5e39a5d47",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
